Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
InstiApp
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
RAHUL SHARMA
InstiApp
Commits
3df0e370
Commit
3df0e370
authored
Jun 22, 2018
by
Sajal Narang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement mess menu, fix #113
parent
9826041e
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
603 additions
and
26 deletions
+603
-26
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/Constants.java
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/Constants.java
+1
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/MainActivity.java
...c/main/java/in/ac/iitb/gymkhana/iitbapp/MainActivity.java
+4
-2
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/adapter/MessMenuAdapter.java
.../in/ac/iitb/gymkhana/iitbapp/adapter/MessMenuAdapter.java
+88
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/RetrofitInterface.java
...va/in/ac/iitb/gymkhana/iitbapp/api/RetrofitInterface.java
+3
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/ServiceGenerator.java
...ava/in/ac/iitb/gymkhana/iitbapp/api/ServiceGenerator.java
+1
-1
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/AppDatabase.java
...in/java/in/ac/iitb/gymkhana/iitbapp/data/AppDatabase.java
+1
-1
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/Converters.java
...ain/java/in/ac/iitb/gymkhana/iitbapp/data/Converters.java
+25
-16
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/DbDao.java
...src/main/java/in/ac/iitb/gymkhana/iitbapp/data/DbDao.java
+15
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/HostelMessMenu.java
...java/in/ac/iitb/gymkhana/iitbapp/data/HostelMessMenu.java
+83
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/MessMenu.java
.../main/java/in/ac/iitb/gymkhana/iitbapp/data/MessMenu.java
+92
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/User.java
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/User.java
+14
-1
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/fragment/MessMenuFragment.java
...n/ac/iitb/gymkhana/iitbapp/fragment/MessMenuFragment.java
+145
-0
app/src/main/res/layout/fragment_mess_menu.xml
app/src/main/res/layout/fragment_mess_menu.xml
+19
-5
app/src/main/res/layout/hostel_spinner_item.xml
app/src/main/res/layout/hostel_spinner_item.xml
+9
-0
app/src/main/res/layout/mess_menu_card.xml
app/src/main/res/layout/mess_menu_card.xml
+83
-0
app/src/main/res/values/strings.xml
app/src/main/res/values/strings.xml
+20
-0
No files found.
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/Constants.java
View file @
3df0e370
...
...
@@ -8,6 +8,7 @@ public class Constants {
public
static
final
String
NOTIFICATIONS_RESPONSE_JSON
=
"notifications_json"
;
public
static
final
String
EVENT_JSON
=
"event_json"
;
public
static
final
String
USER_ID
=
"user_id"
;
public
static
final
String
USER_HOSTEL
=
"user_hostel"
;
public
static
final
String
SENT_TOKEN_TO_SERVER
=
"sentTokenToServer"
;
public
static
final
String
REGISTRATION_COMPLETE
=
"registrationComplete"
;
public
static
final
String
PREF_NAME
=
"LoggedInPref"
;
...
...
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/MainActivity.java
View file @
3df0e370
...
...
@@ -212,8 +212,8 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
updateFragment
(
trainingBlogFragment
);
break
;
case
R
.
id
.
nav_mess_menu
:
MessMenuFragment
mess
m
enuFragment
=
new
MessMenuFragment
();
updateFragment
(
mess
m
enuFragment
);
MessMenuFragment
mess
M
enuFragment
=
new
MessMenuFragment
();
updateFragment
(
mess
M
enuFragment
);
break
;
case
R
.
id
.
nav_gc_rankings
:
GCRankingsFragment
gcrankingsFragment
=
new
GCRankingsFragment
();
...
...
@@ -269,6 +269,8 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
bundle
=
new
Bundle
();
}
bundle
.
putString
(
Constants
.
SESSION_ID
,
session
.
pref
.
getString
(
Constants
.
SESSION_ID
,
"Error"
));
if
(
fragment
instanceof
MessMenuFragment
)
bundle
.
putString
(
Constants
.
USER_HOSTEL
,
currentUser
.
getHostel
());
fragment
.
setArguments
(
bundle
);
FragmentManager
manager
=
getSupportFragmentManager
();
if
(
fragment
instanceof
FeedFragment
)
...
...
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/adapter/MessMenuAdapter.java
0 → 100644
View file @
3df0e370
package
in.ac.iitb.gymkhana.iitbapp.adapter
;
import
android.content.Context
;
import
android.support.annotation.NonNull
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.TextView
;
import
java.util.List
;
import
in.ac.iitb.gymkhana.iitbapp.R
;
import
in.ac.iitb.gymkhana.iitbapp.data.MessMenu
;
public
class
MessMenuAdapter
extends
RecyclerView
.
Adapter
<
MessMenuAdapter
.
ViewHolder
>
{
private
List
<
MessMenu
>
messMenus
;
private
Context
context
;
public
MessMenuAdapter
(
List
<
MessMenu
>
messMenus
)
{
this
.
messMenus
=
messMenus
;
}
@NonNull
@Override
public
ViewHolder
onCreateViewHolder
(
@NonNull
ViewGroup
parent
,
int
viewType
)
{
context
=
parent
.
getContext
();
LayoutInflater
inflater
=
LayoutInflater
.
from
(
context
);
View
postView
=
inflater
.
inflate
(
R
.
layout
.
mess_menu_card
,
parent
,
false
);
final
ViewHolder
postViewHolder
=
new
ViewHolder
(
postView
);
return
postViewHolder
;
}
@Override
public
void
onBindViewHolder
(
@NonNull
MessMenuAdapter
.
ViewHolder
holder
,
int
position
)
{
MessMenu
messMenu
=
messMenus
.
get
(
position
);
holder
.
day
.
setText
(
generateDayString
(
messMenu
.
getDay
()));
holder
.
breakfast
.
setText
(
messMenu
.
getBreakfast
());
holder
.
lunch
.
setText
(
messMenu
.
getLunch
());
holder
.
snacks
.
setText
(
messMenu
.
getSnacks
());
holder
.
dinner
.
setText
(
messMenu
.
getDinner
());
}
@Override
public
int
getItemCount
()
{
return
messMenus
.
size
();
}
public
class
ViewHolder
extends
RecyclerView
.
ViewHolder
{
private
TextView
day
;
private
TextView
breakfast
;
private
TextView
lunch
;
private
TextView
snacks
;
private
TextView
dinner
;
public
ViewHolder
(
View
itemView
)
{
super
(
itemView
);
day
=
itemView
.
findViewById
(
R
.
id
.
day_text_view
);
breakfast
=
itemView
.
findViewById
(
R
.
id
.
breakfast_text_view
);
lunch
=
itemView
.
findViewById
(
R
.
id
.
lunch_text_view
);
snacks
=
itemView
.
findViewById
(
R
.
id
.
snacks_text_view
);
dinner
=
itemView
.
findViewById
(
R
.
id
.
dinner_text_view
);
}
}
private
String
generateDayString
(
int
day
)
{
switch
(
day
)
{
case
1
:
return
"Monday"
;
case
2
:
return
"Tuesday"
;
case
3
:
return
"Wednesday"
;
case
4
:
return
"Thursday"
;
case
5
:
return
"Friday"
;
case
6
:
return
"Saturday"
;
case
7
:
return
"Sunday"
;
default
:
throw
new
RuntimeException
(
"DayIndexOutOfBounds: "
+
day
);
}
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/RetrofitInterface.java
View file @
3df0e370
...
...
@@ -8,6 +8,7 @@ import in.ac.iitb.gymkhana.iitbapp.api.model.ImageUploadRequest;
import
in.ac.iitb.gymkhana.iitbapp.api.model.ImageUploadResponse
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedResponse
;
import
in.ac.iitb.gymkhana.iitbapp.data.HostelMessMenu
;
import
in.ac.iitb.gymkhana.iitbapp.data.PlacementBlogPost
;
import
in.ac.iitb.gymkhana.iitbapp.data.TrainingBlogPost
;
import
in.ac.iitb.gymkhana.iitbapp.data.User
;
...
...
@@ -47,6 +48,8 @@ public interface RetrofitInterface {
@GET
(
"training-blog"
)
Call
<
List
<
TrainingBlogPost
>>
getTrainingBlogFeed
(
@Header
(
"Cookie"
)
String
sessionID
);
@GET
(
"mess"
)
Call
<
List
<
HostelMessMenu
>>
getInstituteMessMenu
(
@Header
(
"Cookie"
)
String
sessionID
);
// @POST("getNotifications/")
// Call<NotificationsResponse> getNotifications(@Body NotificationsRequest notificationsRequest);
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/ServiceGenerator.java
View file @
3df0e370
...
...
@@ -6,7 +6,7 @@ import retrofit2.Retrofit;
import
retrofit2.converter.gson.GsonConverterFactory
;
public
class
ServiceGenerator
{
private
static
final
String
BASE_URL
=
"https://insti.app/api/"
;
private
static
final
String
BASE_URL
=
"https://
api.
insti.app/api/"
;
private
static
OkHttpClient
.
Builder
clientBuilder
=
new
OkHttpClient
.
Builder
();
private
static
Retrofit
.
Builder
retrofitBuilder
=
new
Retrofit
.
Builder
()
.
baseUrl
(
BASE_URL
)
...
...
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/AppDatabase.java
View file @
3df0e370
...
...
@@ -6,7 +6,7 @@ import android.arch.persistence.room.RoomDatabase;
import
android.arch.persistence.room.TypeConverters
;
import
android.content.Context
;
@Database
(
entities
=
{
Event
.
class
,
Body
.
class
,
Venue
.
class
,
User
.
class
,
Role
.
class
,
PlacementBlogPost
.
class
,
TrainingBlogPost
.
class
},
version
=
1
)
@Database
(
entities
=
{
Event
.
class
,
Body
.
class
,
Venue
.
class
,
User
.
class
,
Role
.
class
,
PlacementBlogPost
.
class
,
TrainingBlogPost
.
class
,
HostelMessMenu
.
class
},
version
=
1
)
@TypeConverters
({
Converters
.
class
})
public
abstract
class
AppDatabase
extends
RoomDatabase
{
...
...
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/Converters.java
View file @
3df0e370
...
...
@@ -11,10 +11,6 @@ import java.lang.reflect.Type;
import
java.sql.Timestamp
;
import
java.util.List
;
/**
* Created by mrunz on 14/3/18.
*/
public
class
Converters
{
@TypeConverter
public
static
List
<
Event
>
eventsfromString
(
String
value
)
{
...
...
@@ -73,16 +69,16 @@ public class Converters {
}
@TypeConverter
public
static
List
<
Role
>
rolesfromString
(
String
value
){
Type
listType
=
new
TypeToken
<
List
<
Role
>>(){
public
static
List
<
Role
>
rolesfromString
(
String
value
)
{
Type
listType
=
new
TypeToken
<
List
<
Role
>>()
{
}.
getType
();
return
new
Gson
().
fromJson
(
value
,
listType
);
}
@TypeConverter
public
static
String
stringfromRoles
(
List
<
Role
>
list
){
Gson
gson
=
new
Gson
();
String
json
=
gson
.
toJson
(
list
);
public
static
String
stringfromRoles
(
List
<
Role
>
list
)
{
Gson
gson
=
new
Gson
();
String
json
=
gson
.
toJson
(
list
);
return
json
;
}
...
...
@@ -105,24 +101,24 @@ public class Converters {
}
@TypeConverter
public
static
Body
bodyfromString
(
String
value
){
Type
listType
=
new
TypeToken
<
Body
>(){
public
static
Body
bodyfromString
(
String
value
)
{
Type
listType
=
new
TypeToken
<
Body
>()
{
}.
getType
();
return
new
Gson
().
fromJson
(
value
,
listType
);
return
new
Gson
().
fromJson
(
value
,
listType
);
}
@TypeConverter
public
static
String
stringfromBody
(
Body
body
){
public
static
String
stringfromBody
(
Body
body
)
{
Gson
gson
=
new
Gson
();
String
json
=
gson
.
toJson
(
body
);
return
json
;
}
@TypeConverter
public
static
List
<
String
>
stringsfromString
(
String
value
){
Type
listType
=
new
TypeToken
<
List
<
String
>>(){
public
static
List
<
String
>
stringsfromString
(
String
value
)
{
Type
listType
=
new
TypeToken
<
List
<
String
>>()
{
}.
getType
();
return
new
Gson
().
fromJson
(
value
,
listType
);
return
new
Gson
().
fromJson
(
value
,
listType
);
}
@TypeConverter
...
...
@@ -132,4 +128,17 @@ public class Converters {
return
json
;
}
@TypeConverter
public
static
List
<
MessMenu
>
messMenusfromString
(
String
value
)
{
Type
listType
=
new
TypeToken
<
List
<
MessMenu
>>()
{
}.
getType
();
return
new
Gson
().
fromJson
(
value
,
listType
);
}
@TypeConverter
public
static
String
stringfromMessMenus
(
List
<
MessMenu
>
list
)
{
Gson
gson
=
new
Gson
();
String
json
=
gson
.
toJson
(
list
);
return
json
;
}
}
\ No newline at end of file
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/DbDao.java
View file @
3df0e370
...
...
@@ -30,6 +30,9 @@ public interface DbDao {
@Query
(
"SELECT * FROM trainingBlogPosts"
)
List
<
TrainingBlogPost
>
getAllTrainingBlogPosts
();
@Query
(
"SELECT * FROM hostelMessMenus"
)
List
<
HostelMessMenu
>
getAllHostelMessMenus
();
@Query
(
"SELECT * FROM bodies WHERE id == :id"
)
public
Body
[]
getBody
(
String
id
);
...
...
@@ -48,6 +51,9 @@ public interface DbDao {
@Query
(
"SELECT COUNT(*) from roles"
)
int
countRoles
();
@Query
(
"SELECT COUNT(*) from hostelMessMenus"
)
int
countHostelMessMenus
();
@Insert
void
insertEvents
(
List
<
Event
>
events
);
...
...
@@ -90,6 +96,12 @@ public interface DbDao {
@Insert
void
insertTrainingBlogPosts
(
List
<
TrainingBlogPost
>
posts
);
@Insert
void
insertHostelMessMenu
(
HostelMessMenu
hostelMessMenu
);
@Insert
void
insertHostelMessMenus
(
List
<
HostelMessMenu
>
hostelMessMenus
);
@Delete
void
deleteEvent
(
Event
event
);
...
...
@@ -125,4 +137,7 @@ public interface DbDao {
@Query
(
"DELETE from trainingBlogPosts"
)
void
deleteTrainingBlogPosts
();
@Query
(
"DELETE from hostelMessMenus"
)
void
deleteHostelMessMenus
();
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/HostelMessMenu.java
0 → 100644
View file @
3df0e370
package
in.ac.iitb.gymkhana.iitbapp.data
;
import
android.arch.persistence.room.ColumnInfo
;
import
android.arch.persistence.room.Entity
;
import
android.arch.persistence.room.PrimaryKey
;
import
com.google.gson.annotations.SerializedName
;
import
java.util.List
;
@Entity
(
tableName
=
"hostelMessMenus"
)
public
class
HostelMessMenu
{
@PrimaryKey
(
autoGenerate
=
true
)
int
db_id
;
@ColumnInfo
(
name
=
"id"
)
@SerializedName
(
"id"
)
private
String
menuID
;
@ColumnInfo
(
name
=
"name"
)
@SerializedName
(
"name"
)
private
String
name
;
@ColumnInfo
(
name
=
"short_name"
)
@SerializedName
(
"short_name"
)
private
String
shortName
;
@ColumnInfo
(
name
=
"long_name"
)
@SerializedName
(
"long_name"
)
private
String
longName
;
@ColumnInfo
(
name
=
"mess"
)
@SerializedName
(
"mess"
)
private
List
<
MessMenu
>
messMenus
;
public
HostelMessMenu
(
String
menuID
,
String
name
,
String
shortName
,
String
longName
,
List
<
MessMenu
>
messMenus
)
{
this
.
menuID
=
menuID
;
this
.
name
=
name
;
this
.
shortName
=
shortName
;
this
.
longName
=
longName
;
this
.
messMenus
=
messMenus
;
}
public
String
getMenuID
()
{
return
menuID
;
}
public
void
setMenuID
(
String
menuID
)
{
this
.
menuID
=
menuID
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getShortName
()
{
return
shortName
;
}
public
void
setShortName
(
String
shortName
)
{
this
.
shortName
=
shortName
;
}
public
String
getLongName
()
{
return
longName
;
}
public
void
setLongName
(
String
longName
)
{
this
.
longName
=
longName
;
}
public
List
<
MessMenu
>
getMessMenus
()
{
return
messMenus
;
}
public
void
setMessMenus
(
List
<
MessMenu
>
messMenus
)
{
this
.
messMenus
=
messMenus
;
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/MessMenu.java
0 → 100644
View file @
3df0e370
package
in.ac.iitb.gymkhana.iitbapp.data
;
import
com.google.gson.annotations.SerializedName
;
public
class
MessMenu
{
@SerializedName
(
"id"
)
private
String
mealID
;
@SerializedName
(
"day"
)
private
int
day
;
@SerializedName
(
"breakfast"
)
private
String
breakfast
;
@SerializedName
(
"lunch"
)
private
String
lunch
;
@SerializedName
(
"snacks"
)
private
String
snacks
;
@SerializedName
(
"dinner"
)
private
String
dinner
;
@SerializedName
(
"hostel"
)
private
String
hostelID
;
public
MessMenu
(
String
mealID
,
int
day
,
String
breakfast
,
String
lunch
,
String
snacks
,
String
dinner
,
String
hostelID
)
{
this
.
mealID
=
mealID
;
this
.
day
=
day
;
this
.
breakfast
=
breakfast
;
this
.
lunch
=
lunch
;
this
.
snacks
=
snacks
;
this
.
dinner
=
dinner
;
this
.
hostelID
=
hostelID
;
}
public
String
getMealID
()
{
return
mealID
;
}
public
void
setMealID
(
String
mealID
)
{
this
.
mealID
=
mealID
;
}
public
int
getDay
()
{
return
day
;
}
public
void
setDay
(
int
day
)
{
this
.
day
=
day
;
}
public
String
getBreakfast
()
{
return
breakfast
;
}
public
void
setBreakfast
(
String
breakfast
)
{
this
.
breakfast
=
breakfast
;
}
public
String
getLunch
()
{
return
lunch
;
}
public
void
setLunch
(
String
lunch
)
{
this
.
lunch
=
lunch
;
}
public
String
getSnacks
()
{
return
snacks
;
}
public
void
setSnacks
(
String
snacks
)
{
this
.
snacks
=
snacks
;
}
public
String
getDinner
()
{
return
dinner
;
}
public
void
setDinner
(
String
dinner
)
{
this
.
dinner
=
dinner
;
}
public
String
getHostelID
()
{
return
hostelID
;
}
public
void
setHostelID
(
String
hostelID
)
{
this
.
hostelID
=
hostelID
;
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/User.java
View file @
3df0e370
...
...
@@ -60,8 +60,12 @@ public class User {
@ColumnInfo
(
name
=
"ldap_id"
)
@SerializedName
(
"ldap_id"
)
String
userLDAPId
;
@ColumnInfo
(
name
=
"hostel"
)
@SerializedName
(
"hostel"
)
String
hostel
;
public
User
(
String
userID
,
String
userName
,
String
userProfilePictureUrl
,
List
<
Event
>
userInterestedEvents
,
List
<
Event
>
userGoingEvents
,
String
userEmail
,
String
userRollNumber
,
String
userContactNumber
,
String
userAbout
,
List
<
Body
>
userFollowedBodies
,
List
<
String
>
userFollowedBodiesID
,
List
<
Role
>
userRoles
,
List
<
Role
>
userInstituteRoles
,
String
userWebsiteURL
,
String
userLDAPId
)
{
public
User
(
int
db_id
,
String
userID
,
String
userName
,
String
userProfilePictureUrl
,
List
<
Event
>
userInterestedEvents
,
List
<
Event
>
userGoingEvents
,
String
userEmail
,
String
userRollNumber
,
String
userContactNumber
,
String
userAbout
,
List
<
Body
>
userFollowedBodies
,
List
<
String
>
userFollowedBodiesID
,
List
<
Role
>
userRoles
,
List
<
Role
>
userInstituteRoles
,
String
userWebsiteURL
,
String
userLDAPId
,
String
hostel
)
{
this
.
db_id
=
db_id
;
this
.
userID
=
userID
;
this
.
userName
=
userName
;
this
.
userProfilePictureUrl
=
userProfilePictureUrl
;
...
...
@@ -77,6 +81,7 @@ public class User {
this
.
userInstituteRoles
=
userInstituteRoles
;
this
.
userWebsiteURL
=
userWebsiteURL
;
this
.
userLDAPId
=
userLDAPId
;
this
.
hostel
=
hostel
;
}
public
static
User
fromString
(
String
json
)
{
...
...
@@ -203,6 +208,14 @@ public class User {
this
.
userLDAPId
=
userLDAPId
;
}
public
String
getHostel
()
{
return
hostel
;
}
public
void
setHostel
(
String
hostel
)
{
this
.
hostel
=
hostel
;
}
@Override
public
String
toString
()
{
return
new
Gson
().
toJson
(
this
);
...
...
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/fragment/MessMenuFragment.java
View file @
3df0e370
package
in.ac.iitb.gymkhana.iitbapp.fragment
;
import
android.app.Activity
;
import
android.os.AsyncTask
;
import
android.os.Bundle
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.widget.SwipeRefreshLayout
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.AdapterView
;
import
android.widget.ArrayAdapter
;
import
android.widget.Spinner
;
import
android.widget.Toast
;
import
java.util.List
;
import
in.ac.iitb.gymkhana.iitbapp.ActivityBuffer
;
import
in.ac.iitb.gymkhana.iitbapp.Constants
;
import
in.ac.iitb.gymkhana.iitbapp.R
;
import
in.ac.iitb.gymkhana.iitbapp.adapter.MessMenuAdapter
;
import
in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface
;
import
in.ac.iitb.gymkhana.iitbapp.api.ServiceGenerator
;
import
in.ac.iitb.gymkhana.iitbapp.data.AppDatabase
;
import
in.ac.iitb.gymkhana.iitbapp.data.HostelMessMenu
;
import
in.ac.iitb.gymkhana.iitbapp.data.MessMenu
;
import
retrofit2.Call
;
import
retrofit2.Callback
;
import
retrofit2.Response
;
/**
* A simple {@link Fragment} subclass.
*/
public
class
MessMenuFragment
extends
BaseFragment
{
private
RecyclerView
messMenuRecyclerView
;
private
SwipeRefreshLayout
messMenuSwipeRefreshLayout
;
private
AppDatabase
appDatabase
;
private
Spinner
hostelSpinner
;
public
MessMenuFragment
()
{
// Required empty public constructor
...
...
@@ -27,4 +54,122 @@ public class MessMenuFragment extends BaseFragment {
return
inflater
.
inflate
(
R
.
layout
.
fragment_mess_menu
,
container
,
false
);
}
@Override
public
void
onStart
()
{
super
.
onStart
();
final
String
hostel
=
(
String
)
getArguments
().
get
(
Constants
.
USER_HOSTEL
);
displayMenu
(
hostel
);
messMenuSwipeRefreshLayout
=
getActivity
().
findViewById
(
R
.
id
.
mess_menu_swipe_refresh_layout
);
messMenuSwipeRefreshLayout
.
setOnRefreshListener
(
new
SwipeRefreshLayout
.
OnRefreshListener
()
{
@Override
public
void
onRefresh
()
{
updateMessMenu
(
hostel
);
}
});
hostelSpinner
=
getActivity
().
findViewById
(
R
.
id
.
hostel_spinner
);
ArrayAdapter
<
CharSequence
>
adapter
=
ArrayAdapter
.
createFromResource
(
getContext
(),
R
.
array
.
hostels_array
,
R
.
layout
.
hostel_spinner_item
);
adapter
.
setDropDownViewResource
(
android
.
R
.
layout
.
simple_spinner_dropdown_item
);
hostelSpinner
.
setAdapter
(
adapter
);
hostelSpinner
.
setOnItemSelectedListener
(
new
AdapterView
.
OnItemSelectedListener
()
{
@Override
public
void
onItemSelected
(
AdapterView
<?>
adapterView
,
View
view
,
int
i
,
long
l
)
{
if
(
i
==
16
)
displayMenu
(
"Tansa"
);
else
displayMenu
(
Integer
.
toString
(
i
+
1
));
}
@Override
public
void
onNothingSelected
(
AdapterView
<?>
adapterView
)
{
}
});
if
(
hostel
.
equals
(
"Tansa"
))
hostelSpinner
.
setSelection
(
16
);
else
hostelSpinner
.
setSelection
(
Integer
.
parseInt
(
hostel
)
-
1
);
}
private
void
displayMenu
(
final
String
hostel
)
{
appDatabase
=
AppDatabase
.
getAppDatabase
(
getContext
());
new
showMessMenuFromDB
().
execute
(
hostel
);
updateMessMenu
(
hostel
);
}
private
void
updateMessMenu
(
final
String
hostel
)
{
RetrofitInterface
retrofitInterface
=
ServiceGenerator
.
createService
(
RetrofitInterface
.
class
);
retrofitInterface
.
getInstituteMessMenu
(
"sessionid="
+
getArguments
().
getString
(
Constants
.
SESSION_ID
)).
enqueue
(
new
Callback
<
List
<
HostelMessMenu
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
HostelMessMenu
>>
call
,
Response
<
List
<
HostelMessMenu
>>
response
)
{
if
(
response
.
isSuccessful
())
{
List
<
HostelMessMenu
>
instituteMessMenu
=
response
.
body
();
HostelMessMenu
hostelMessMenu
=
findMessMenu
(
instituteMessMenu
,
hostel
);
displayMessMenu
(
hostelMessMenu
);
new
updateDatabase
().
execute
(
instituteMessMenu
);
}
//Server Error
messMenuSwipeRefreshLayout
.
setRefreshing
(
false
);
}
@Override
public
void
onFailure
(
Call
<
List
<
HostelMessMenu
>>
call
,
Throwable
t
)
{
//Network Error
messMenuSwipeRefreshLayout
.
setRefreshing
(
false
);
}
});
}
private
HostelMessMenu
findMessMenu
(
List
<
HostelMessMenu
>
hostelMessMenus
,
String
hostel
)
{
for
(
HostelMessMenu
hostelMessMenu
:
hostelMessMenus
)
{
if
(
hostelMessMenu
.
getShortName
().
equals
(
hostel
))
{
return
hostelMessMenu
;
}
}
Toast
.
makeText
(
getContext
(),
"Could not retrieve your hostel menu. Please contact your mess secretary/councillor."
,
Toast
.
LENGTH_LONG
).
show
();
return
null
;
}
private
void
displayMessMenu
(
HostelMessMenu
hostelMessMenu
)
{
final
MessMenuAdapter
messMenuAdapter
=
new
MessMenuAdapter
(
hostelMessMenu
.
getMessMenus
());
getActivityBuffer
().
safely
(
new
ActivityBuffer
.
IRunnable
()
{
@Override
public
void
run
(
Activity
pActivity
)
{
try
{
messMenuRecyclerView
=
getActivity
().
findViewById
(
R
.
id
.
mess_menu_recycler_view
);
messMenuRecyclerView
.
setAdapter
(
messMenuAdapter
);
messMenuRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
}
catch
(
NullPointerException
e
)
{
e
.
printStackTrace
();
}
}
});
}
private
class
updateDatabase
extends
AsyncTask
<
List
<
HostelMessMenu
>,
Void
,
Integer
>
{
@Override
protected
Integer
doInBackground
(
List
<
HostelMessMenu
>...
menus
)
{
appDatabase
.
dbDao
().
deleteHostelMessMenus
();
appDatabase
.
dbDao
().
insertHostelMessMenus
(
menus
[
0
]);
return
1
;
}
}
public
class
showMessMenuFromDB
extends
AsyncTask
<
String
,
Void
,
HostelMessMenu
>
{
@Override
protected
HostelMessMenu
doInBackground
(
String
...
strings
)
{
return
findMessMenu
(
appDatabase
.
dbDao
().
getAllHostelMessMenus
(),
strings
[
0
]);
}
@Override
protected
void
onPostExecute
(
HostelMessMenu
hostelMessMenu
)
{
displayMessMenu
(
hostelMessMenu
);
}
}
}
app/src/main/res/layout/fragment_mess_menu.xml
View file @
3df0e370
<
Frame
Layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<
Linear
Layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
"in.ac.iitb.gymkhana.iitbapp.fragment.MessMenuFragment"
>
<!-- TODO: Update blank fragment layout -->
<TextView
<Spinner
android:id=
"@+id/hostel_spinner"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_margin=
"16dp"
/>
<android.support.v4.widget.SwipeRefreshLayout
android:id=
"@+id/mess_menu_swipe_refresh_layout"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:text=
"@string/hello_blank_fragment"
/>
tools:context=
"in.ac.iitb.gymkhana.iitbapp.fragment.MessMenuFragment"
>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/mess_menu_recycler_view"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:paddingTop=
"8dp"
/>
</FrameLayout>
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
app/src/main/res/layout/hostel_spinner_item.xml
0 → 100644
View file @
3df0e370
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"start"
android:padding=
"4dp"
android:textColor=
"#000000"
android:textSize=
"20sp"
/>
\ No newline at end of file
app/src/main/res/layout/mess_menu_card.xml
0 → 100644
View file @
3df0e370
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:card_view=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"4dp"
android:layout_marginLeft=
"8dp"
android:layout_marginRight=
"8dp"
android:layout_marginTop=
"4dp"
card_view:cardCornerRadius=
"4dp"
card_view:cardElevation=
"4dp"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_margin=
"16dp"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/day_text_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textColor=
"#000000"
android:textSize=
"20sp"
android:textStyle=
"bold"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:text=
"Breakfast"
android:textColor=
"@color/colorAccent"
android:textSize=
"16sp"
/>
<TextView
android:id=
"@+id/breakfast_text_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textColor=
"#000000"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:text=
"Lunch"
android:textColor=
"@color/colorAccent"
android:textSize=
"16sp"
/>
<TextView
android:id=
"@+id/lunch_text_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textColor=
"#000000"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:text=
"Tiffin"
android:textColor=
"@color/colorAccent"
android:textSize=
"16sp"
/>
<TextView
android:id=
"@+id/snacks_text_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textColor=
"#000000"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:text=
"Dinner"
android:textColor=
"@color/colorAccent"
android:textSize=
"16sp"
/>
<TextView
android:id=
"@+id/dinner_text_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textColor=
"#000000"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
3df0e370
...
...
@@ -12,4 +12,24 @@
<string
name=
"Cancel"
>
Cancel
</string>
<string
name=
"gps_network_not_enabled"
>
Location is not enabled. Please turn on your location from the settings.
</string>
<string
name=
"open_location_settings"
>
Open Location Settings
</string>
<string-array
name=
"hostels_array"
>
<item>
Hostel 1
</item>
<item>
Hostel 2
</item>
<item>
Hostel 3
</item>
<item>
Hostel 4
</item>
<item>
Hostel 5
</item>
<item>
Hostel 6
</item>
<item>
Hostel 7
</item>
<item>
Hostel 8
</item>
<item>
Hostel 9
</item>
<item>
Hostel 10
</item>
<item>
Hostel 11
</item>
<item>
Hostel 12
</item>
<item>
Hostel 13
</item>
<item>
Hostel 14
</item>
<item>
Hostel 15
</item>
<item>
Hostel 16
</item>
<item>
Tansa House
</item>
</string-array>
</resources>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment