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
d389ad19
Commit
d389ad19
authored
Jun 17, 2018
by
Sajal Narang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement Placement and training blogs, fix #96
parent
a7a14165
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
717 additions
and
57 deletions
+717
-57
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/MainActivity.java
...c/main/java/in/ac/iitb/gymkhana/iitbapp/MainActivity.java
+9
-4
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/adapter/PlacementBlogAdapter.java
...c/iitb/gymkhana/iitbapp/adapter/PlacementBlogAdapter.java
+70
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/adapter/TrainingBlogAdapter.java
...ac/iitb/gymkhana/iitbapp/adapter/TrainingBlogAdapter.java
+70
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/RetrofitInterface.java
...va/in/ac/iitb/gymkhana/iitbapp/api/RetrofitInterface.java
+10
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/AppDatabase.java
...in/java/in/ac/iitb/gymkhana/iitbapp/data/AppDatabase.java
+1
-5
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/DbDao.java
...src/main/java/in/ac/iitb/gymkhana/iitbapp/data/DbDao.java
+24
-3
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/PlacementBlogPost.java
...a/in/ac/iitb/gymkhana/iitbapp/data/PlacementBlogPost.java
+83
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/TrainingBlogPost.java
...va/in/ac/iitb/gymkhana/iitbapp/data/TrainingBlogPost.java
+83
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/fragment/PTCellFragment.java
.../in/ac/iitb/gymkhana/iitbapp/fragment/PTCellFragment.java
+0
-30
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/fragment/PlacementBlogFragment.java
...iitb/gymkhana/iitbapp/fragment/PlacementBlogFragment.java
+140
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/fragment/TrainingBlogFragment.java
.../iitb/gymkhana/iitbapp/fragment/TrainingBlogFragment.java
+140
-0
app/src/main/res/layout/blog_post_card.xml
app/src/main/res/layout/blog_post_card.xml
+39
-0
app/src/main/res/layout/fragment_placement_blog.xml
app/src/main/res/layout/fragment_placement_blog.xml
+20
-0
app/src/main/res/layout/fragment_pt_cell.xml
app/src/main/res/layout/fragment_pt_cell.xml
+0
-13
app/src/main/res/layout/fragment_training_blog.xml
app/src/main/res/layout/fragment_training_blog.xml
+20
-0
app/src/main/res/menu/activity_main_drawer.xml
app/src/main/res/menu/activity_main_drawer.xml
+8
-2
No files found.
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/MainActivity.java
View file @
d389ad19
...
...
@@ -38,10 +38,11 @@ import in.ac.iitb.gymkhana.iitbapp.fragment.MapFragment;
import
in.ac.iitb.gymkhana.iitbapp.fragment.MessMenuFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.MyEventsFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.NotificationsFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.PTCellFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.PeopleFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.PlacementBlogFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.ProfileFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.TimetableFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.TrainingBlogFragment
;
import
static
in
.
ac
.
iitb
.
gymkhana
.
iitbapp
.
Constants
.
MY_PERMISSIONS_REQUEST_ACCESS_LOCATION
;
import
static
in
.
ac
.
iitb
.
gymkhana
.
iitbapp
.
Constants
.
MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE
;
...
...
@@ -202,9 +203,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
MyEventsFragment
myeventsFragment
=
new
MyEventsFragment
();
updateFragment
(
myeventsFragment
);
break
;
case
R
.
id
.
nav_pt_cell
:
PTCellFragment
ptcellFragment
=
new
PTCellFragment
();
updateFragment
(
ptcellFragment
);
case
R
.
id
.
nav_placement_blog
:
PlacementBlogFragment
placementBlogFragment
=
new
PlacementBlogFragment
();
updateFragment
(
placementBlogFragment
);
break
;
case
R
.
id
.
nav_training_blog
:
TrainingBlogFragment
trainingBlogFragment
=
new
TrainingBlogFragment
();
updateFragment
(
trainingBlogFragment
);
break
;
case
R
.
id
.
nav_mess_menu
:
MessMenuFragment
messmenuFragment
=
new
MessMenuFragment
();
...
...
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/adapter/PlacementBlogAdapter.java
0 → 100644
View file @
d389ad19
package
in.ac.iitb.gymkhana.iitbapp.adapter
;
import
android.content.Context
;
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.ItemClickListener
;
import
in.ac.iitb.gymkhana.iitbapp.R
;
import
in.ac.iitb.gymkhana.iitbapp.data.PlacementBlogPost
;
import
ru.noties.markwon.Markwon
;
public
class
PlacementBlogAdapter
extends
RecyclerView
.
Adapter
<
PlacementBlogAdapter
.
ViewHolder
>
{
private
List
<
PlacementBlogPost
>
posts
;
private
Context
context
;
private
ItemClickListener
itemClickListener
;
public
PlacementBlogAdapter
(
List
<
PlacementBlogPost
>
posts
,
ItemClickListener
itemClickListener
)
{
this
.
posts
=
posts
;
this
.
itemClickListener
=
itemClickListener
;
}
@Override
public
ViewHolder
onCreateViewHolder
(
ViewGroup
parent
,
int
viewType
)
{
context
=
parent
.
getContext
();
LayoutInflater
inflater
=
LayoutInflater
.
from
(
context
);
View
postView
=
inflater
.
inflate
(
R
.
layout
.
blog_post_card
,
parent
,
false
);
final
PlacementBlogAdapter
.
ViewHolder
postViewHolder
=
new
PlacementBlogAdapter
.
ViewHolder
(
postView
);
postView
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
itemClickListener
.
onItemClick
(
v
,
postViewHolder
.
getAdapterPosition
());
}
});
return
postViewHolder
;
}
@Override
public
void
onBindViewHolder
(
ViewHolder
holder
,
int
position
)
{
PlacementBlogPost
post
=
posts
.
get
(
position
);
Markwon
.
setMarkdown
(
holder
.
postTitle
,
post
.
getTitle
());
holder
.
postPublished
.
setText
(
post
.
getPublished
());
Markwon
.
setMarkdown
(
holder
.
postContent
,
post
.
getContent
());
}
@Override
public
int
getItemCount
()
{
return
posts
.
size
();
}
public
class
ViewHolder
extends
RecyclerView
.
ViewHolder
{
private
TextView
postTitle
;
private
TextView
postPublished
;
private
TextView
postContent
;
public
ViewHolder
(
View
itemView
)
{
super
(
itemView
);
postTitle
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
post_title
);
postPublished
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
post_published
);
postContent
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
post_content
);
}
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/adapter/TrainingBlogAdapter.java
0 → 100644
View file @
d389ad19
package
in.ac.iitb.gymkhana.iitbapp.adapter
;
import
android.content.Context
;
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.ItemClickListener
;
import
in.ac.iitb.gymkhana.iitbapp.R
;
import
in.ac.iitb.gymkhana.iitbapp.data.TrainingBlogPost
;
import
ru.noties.markwon.Markwon
;
public
class
TrainingBlogAdapter
extends
RecyclerView
.
Adapter
<
TrainingBlogAdapter
.
ViewHolder
>
{
private
List
<
TrainingBlogPost
>
posts
;
private
Context
context
;
private
ItemClickListener
itemClickListener
;
public
TrainingBlogAdapter
(
List
<
TrainingBlogPost
>
posts
,
ItemClickListener
itemClickListener
)
{
this
.
posts
=
posts
;
this
.
itemClickListener
=
itemClickListener
;
}
@Override
public
ViewHolder
onCreateViewHolder
(
ViewGroup
parent
,
int
viewType
)
{
context
=
parent
.
getContext
();
LayoutInflater
inflater
=
LayoutInflater
.
from
(
context
);
View
postView
=
inflater
.
inflate
(
R
.
layout
.
blog_post_card
,
parent
,
false
);
final
TrainingBlogAdapter
.
ViewHolder
postViewHolder
=
new
TrainingBlogAdapter
.
ViewHolder
(
postView
);
postView
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
itemClickListener
.
onItemClick
(
v
,
postViewHolder
.
getAdapterPosition
());
}
});
return
postViewHolder
;
}
@Override
public
void
onBindViewHolder
(
ViewHolder
holder
,
int
position
)
{
TrainingBlogPost
post
=
posts
.
get
(
position
);
Markwon
.
setMarkdown
(
holder
.
postTitle
,
post
.
getTitle
());
holder
.
postPublished
.
setText
(
post
.
getPublished
());
Markwon
.
setMarkdown
(
holder
.
postContent
,
post
.
getContent
());
}
@Override
public
int
getItemCount
()
{
return
posts
.
size
();
}
public
class
ViewHolder
extends
RecyclerView
.
ViewHolder
{
private
TextView
postTitle
;
private
TextView
postPublished
;
private
TextView
postContent
;
public
ViewHolder
(
View
itemView
)
{
super
(
itemView
);
postTitle
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
post_title
);
postPublished
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
post_published
);
postContent
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
post_content
);
}
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/RetrofitInterface.java
View file @
d389ad19
package
in.ac.iitb.gymkhana.iitbapp.api
;
import
java.util.List
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateRequest
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateResponse
;
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.PlacementBlogPost
;
import
in.ac.iitb.gymkhana.iitbapp.data.TrainingBlogPost
;
import
in.ac.iitb.gymkhana.iitbapp.data.User
;
import
retrofit2.Call
;
import
retrofit2.http.Body
;
...
...
@@ -37,6 +41,12 @@ public interface RetrofitInterface {
@GET
(
"user-me/ues/{eventID}"
)
Call
<
Void
>
updateUserEventStatus
(
@Header
(
"Cookie"
)
String
sessionID
,
@Path
(
"eventID"
)
String
eventID
,
@Query
(
"status"
)
int
status
);
@GET
(
"placement-blog"
)
Call
<
List
<
PlacementBlogPost
>>
getPlacementBlogFeed
(
@Header
(
"Cookie"
)
String
sessionID
);
@GET
(
"training-blog"
)
Call
<
List
<
TrainingBlogPost
>>
getTrainingBlogFeed
(
@Header
(
"Cookie"
)
String
sessionID
);
// @POST("getNotifications/")
// Call<NotificationsResponse> getNotifications(@Body NotificationsRequest notificationsRequest);
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/AppDatabase.java
View file @
d389ad19
...
...
@@ -6,11 +6,7 @@ import android.arch.persistence.room.RoomDatabase;
import
android.arch.persistence.room.TypeConverters
;
import
android.content.Context
;
/**
* Created by mrunz on 14/3/18.
*/
@Database
(
entities
=
{
Event
.
class
,
Body
.
class
,
Venue
.
class
,
User
.
class
,
Role
.
class
},
version
=
1
)
@Database
(
entities
=
{
Event
.
class
,
Body
.
class
,
Venue
.
class
,
User
.
class
,
Role
.
class
,
PlacementBlogPost
.
class
,
TrainingBlogPost
.
class
},
version
=
1
)
@TypeConverters
({
Converters
.
class
})
public
abstract
class
AppDatabase
extends
RoomDatabase
{
...
...
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/DbDao.java
View file @
d389ad19
...
...
@@ -7,9 +7,6 @@ import android.arch.persistence.room.Query;
import
java.util.List
;
/**
* Created by mrunz on 13/3/18.
*/
@Dao
public
interface
DbDao
{
@Query
(
"SELECT * FROM events"
)
...
...
@@ -27,6 +24,12 @@ public interface DbDao {
@Query
(
"SELECT * FROM roles"
)
List
<
Role
>
getAllRoles
();
@Query
(
"SELECT * FROM placementBlogPosts"
)
List
<
PlacementBlogPost
>
getAllPlacementBlogPosts
();
@Query
(
"SELECT * FROM trainingBlogPosts"
)
List
<
TrainingBlogPost
>
getAllTrainingBlogPosts
();
@Query
(
"SELECT * FROM bodies WHERE id == :id"
)
public
Body
[]
getBody
(
String
id
);
...
...
@@ -75,6 +78,18 @@ public interface DbDao {
@Insert
void
insertRole
(
Role
role
);
@Insert
void
insertPlacementBlogPost
(
PlacementBlogPost
post
);
@Insert
void
insertPlacementBlogPosts
(
List
<
PlacementBlogPost
>
posts
);
@Insert
void
insertTrainingBlogPost
(
TrainingBlogPost
post
);
@Insert
void
insertTrainingBlogPosts
(
List
<
TrainingBlogPost
>
posts
);
@Delete
void
deleteEvent
(
Event
event
);
...
...
@@ -104,4 +119,10 @@ public interface DbDao {
@Query
(
"DELETE from roles"
)
void
deleteRoles
();
@Query
(
"DELETE from placementBlogPosts"
)
void
deletePlacementBlogPosts
();
@Query
(
"DELETE from trainingBlogPosts"
)
void
deleteTrainingBlogPosts
();
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/PlacementBlogPost.java
0 → 100644
View file @
d389ad19
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
;
@Entity
(
tableName
=
"placementBlogPosts"
)
public
class
PlacementBlogPost
{
@PrimaryKey
(
autoGenerate
=
true
)
int
db_id
;
@ColumnInfo
(
name
=
"id"
)
@SerializedName
(
"id"
)
private
String
postID
;
@ColumnInfo
(
name
=
"link"
)
@SerializedName
(
"link"
)
private
String
link
;
@ColumnInfo
(
name
=
"title"
)
@SerializedName
(
"title"
)
private
String
title
;
@ColumnInfo
(
name
=
"content"
)
@SerializedName
(
"content"
)
private
String
content
;
@ColumnInfo
(
name
=
"published"
)
@SerializedName
(
"published"
)
private
String
published
;
public
PlacementBlogPost
(
String
postID
,
String
link
,
String
title
,
String
content
,
String
published
)
{
this
.
postID
=
postID
;
this
.
link
=
link
;
this
.
title
=
title
;
this
.
content
=
content
;
this
.
published
=
published
;
}
public
String
getPostID
()
{
return
postID
;
}
public
void
setPostID
(
String
postID
)
{
this
.
postID
=
postID
;
}
public
String
getLink
()
{
return
link
;
}
public
void
setLink
(
String
link
)
{
this
.
link
=
link
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getContent
()
{
return
content
;
}
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
public
String
getPublished
()
{
return
published
;
}
public
void
setPublished
(
String
published
)
{
this
.
published
=
published
;
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/data/TrainingBlogPost.java
0 → 100644
View file @
d389ad19
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
;
@Entity
(
tableName
=
"trainingBlogPosts"
)
public
class
TrainingBlogPost
{
@PrimaryKey
(
autoGenerate
=
true
)
int
db_id
;
@ColumnInfo
(
name
=
"id"
)
@SerializedName
(
"id"
)
private
String
postID
;
@ColumnInfo
(
name
=
"link"
)
@SerializedName
(
"link"
)
private
String
link
;
@ColumnInfo
(
name
=
"title"
)
@SerializedName
(
"title"
)
private
String
title
;
@ColumnInfo
(
name
=
"content"
)
@SerializedName
(
"content"
)
private
String
content
;
@ColumnInfo
(
name
=
"published"
)
@SerializedName
(
"published"
)
private
String
published
;
public
TrainingBlogPost
(
String
postID
,
String
link
,
String
title
,
String
content
,
String
published
)
{
this
.
postID
=
postID
;
this
.
link
=
link
;
this
.
title
=
title
;
this
.
content
=
content
;
this
.
published
=
published
;
}
public
String
getPostID
()
{
return
postID
;
}
public
void
setPostID
(
String
postID
)
{
this
.
postID
=
postID
;
}
public
String
getLink
()
{
return
link
;
}
public
void
setLink
(
String
link
)
{
this
.
link
=
link
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getContent
()
{
return
content
;
}
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
public
String
getPublished
()
{
return
published
;
}
public
void
setPublished
(
String
published
)
{
this
.
published
=
published
;
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/fragment/PTCellFragment.java
deleted
100644 → 0
View file @
a7a14165
package
in.ac.iitb.gymkhana.iitbapp.fragment
;
import
android.os.Bundle
;
import
android.support.v4.app.Fragment
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
in.ac.iitb.gymkhana.iitbapp.R
;
/**
* A simple {@link Fragment} subclass.
*/
public
class
PTCellFragment
extends
BaseFragment
{
public
PTCellFragment
()
{
// Required 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_pt_cell
,
container
,
false
);
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/fragment/PlacementBlogFragment.java
0 → 100644
View file @
d389ad19
package
in.ac.iitb.gymkhana.iitbapp.fragment
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.net.Uri
;
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
java.util.List
;
import
in.ac.iitb.gymkhana.iitbapp.ActivityBuffer
;
import
in.ac.iitb.gymkhana.iitbapp.Constants
;
import
in.ac.iitb.gymkhana.iitbapp.ItemClickListener
;
import
in.ac.iitb.gymkhana.iitbapp.R
;
import
in.ac.iitb.gymkhana.iitbapp.adapter.PlacementBlogAdapter
;
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.PlacementBlogPost
;
import
retrofit2.Call
;
import
retrofit2.Callback
;
import
retrofit2.Response
;
/**
* A simple {@link Fragment} subclass.
*/
public
class
PlacementBlogFragment
extends
BaseFragment
{
private
RecyclerView
placementFeedRecyclerView
;
private
SwipeRefreshLayout
feedSwipeRefreshLayout
;
private
AppDatabase
appDatabase
;
public
PlacementBlogFragment
()
{
// Required 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_placement_blog
,
container
,
false
);
}
@Override
public
void
onStart
()
{
super
.
onStart
();
appDatabase
=
AppDatabase
.
getAppDatabase
(
getContext
());
new
PlacementBlogFragment
.
showPlacementBlogFromDB
().
execute
();
updatePlacementFeed
();
feedSwipeRefreshLayout
=
getActivity
().
findViewById
(
R
.
id
.
placement_feed_swipe_refresh_layout
);
feedSwipeRefreshLayout
.
setOnRefreshListener
(
new
SwipeRefreshLayout
.
OnRefreshListener
()
{
@Override
public
void
onRefresh
()
{
updatePlacementFeed
();
}
});
}
private
void
updatePlacementFeed
()
{
RetrofitInterface
retrofitInterface
=
ServiceGenerator
.
createService
(
RetrofitInterface
.
class
);
retrofitInterface
.
getPlacementBlogFeed
(
"sessionid="
+
getArguments
().
getString
(
Constants
.
SESSION_ID
)).
enqueue
(
new
Callback
<
List
<
PlacementBlogPost
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
PlacementBlogPost
>>
call
,
Response
<
List
<
PlacementBlogPost
>>
response
)
{
if
(
response
.
isSuccessful
())
{
List
<
PlacementBlogPost
>
posts
=
response
.
body
();
displayPlacementFeed
(
posts
);
new
updateDatabase
().
execute
(
posts
);
}
//Server Error
feedSwipeRefreshLayout
.
setRefreshing
(
false
);
}
@Override
public
void
onFailure
(
Call
<
List
<
PlacementBlogPost
>>
call
,
Throwable
t
)
{
//Network Error
feedSwipeRefreshLayout
.
setRefreshing
(
false
);
}
});
}
private
void
displayPlacementFeed
(
final
List
<
PlacementBlogPost
>
result
)
{
final
PlacementBlogAdapter
placementBlogAdapter
=
new
PlacementBlogAdapter
(
result
,
new
ItemClickListener
()
{
@Override
public
void
onItemClick
(
View
v
,
int
position
)
{
openWebURL
(
result
.
get
(
position
).
getLink
());
}
});
getActivityBuffer
().
safely
(
new
ActivityBuffer
.
IRunnable
()
{
@Override
public
void
run
(
Activity
pActivity
)
{
try
{
placementFeedRecyclerView
=
getActivity
().
findViewById
(
R
.
id
.
placement_feed_recycler_view
);
placementFeedRecyclerView
.
setAdapter
(
placementBlogAdapter
);
placementFeedRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
}
catch
(
NullPointerException
e
)
{
e
.
printStackTrace
();
}
}
});
}
private
void
openWebURL
(
String
URL
)
{
Intent
browse
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
URL
));
startActivity
(
browse
);
}
private
class
updateDatabase
extends
AsyncTask
<
List
<
PlacementBlogPost
>,
Void
,
Integer
>
{
@Override
protected
Integer
doInBackground
(
List
<
PlacementBlogPost
>...
posts
)
{
appDatabase
.
dbDao
().
deletePlacementBlogPosts
();
appDatabase
.
dbDao
().
insertPlacementBlogPosts
(
posts
[
0
]);
return
1
;
}
}
private
class
showPlacementBlogFromDB
extends
AsyncTask
<
String
,
Void
,
List
<
PlacementBlogPost
>>
{
@Override
protected
List
<
PlacementBlogPost
>
doInBackground
(
String
...
posts
)
{
return
appDatabase
.
dbDao
().
getAllPlacementBlogPosts
();
}
protected
void
onPostExecute
(
List
<
PlacementBlogPost
>
result
)
{
displayPlacementFeed
(
result
);
}
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/fragment/TrainingBlogFragment.java
0 → 100644
View file @
d389ad19
package
in.ac.iitb.gymkhana.iitbapp.fragment
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.net.Uri
;
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
java.util.List
;
import
in.ac.iitb.gymkhana.iitbapp.ActivityBuffer
;
import
in.ac.iitb.gymkhana.iitbapp.Constants
;
import
in.ac.iitb.gymkhana.iitbapp.ItemClickListener
;
import
in.ac.iitb.gymkhana.iitbapp.R
;
import
in.ac.iitb.gymkhana.iitbapp.adapter.TrainingBlogAdapter
;
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.TrainingBlogPost
;
import
retrofit2.Call
;
import
retrofit2.Callback
;
import
retrofit2.Response
;
/**
* A simple {@link Fragment} subclass.
*/
public
class
TrainingBlogFragment
extends
BaseFragment
{
private
RecyclerView
trainingFeedRecyclerView
;
private
SwipeRefreshLayout
feedSwipeRefreshLayout
;
private
AppDatabase
appDatabase
;
public
TrainingBlogFragment
()
{
// Required 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_training_blog
,
container
,
false
);
}
@Override
public
void
onStart
()
{
super
.
onStart
();
appDatabase
=
AppDatabase
.
getAppDatabase
(
getContext
());
new
TrainingBlogFragment
.
showTrainingBlogFromDB
().
execute
();
updateTrainingFeed
();
feedSwipeRefreshLayout
=
getActivity
().
findViewById
(
R
.
id
.
training_feed_swipe_refresh_layout
);
feedSwipeRefreshLayout
.
setOnRefreshListener
(
new
SwipeRefreshLayout
.
OnRefreshListener
()
{
@Override
public
void
onRefresh
()
{
updateTrainingFeed
();
}
});
}
private
void
updateTrainingFeed
()
{
RetrofitInterface
retrofitInterface
=
ServiceGenerator
.
createService
(
RetrofitInterface
.
class
);
retrofitInterface
.
getTrainingBlogFeed
(
"sessionid="
+
getArguments
().
getString
(
Constants
.
SESSION_ID
)).
enqueue
(
new
Callback
<
List
<
TrainingBlogPost
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
TrainingBlogPost
>>
call
,
Response
<
List
<
TrainingBlogPost
>>
response
)
{
if
(
response
.
isSuccessful
())
{
List
<
TrainingBlogPost
>
posts
=
response
.
body
();
displayTrainingFeed
(
posts
);
new
updateDatabase
().
execute
(
posts
);
}
//Server Error
feedSwipeRefreshLayout
.
setRefreshing
(
false
);
}
@Override
public
void
onFailure
(
Call
<
List
<
TrainingBlogPost
>>
call
,
Throwable
t
)
{
//Network Error
feedSwipeRefreshLayout
.
setRefreshing
(
false
);
}
});
}
private
void
displayTrainingFeed
(
final
List
<
TrainingBlogPost
>
result
)
{
final
TrainingBlogAdapter
trainingBlogAdapter
=
new
TrainingBlogAdapter
(
result
,
new
ItemClickListener
()
{
@Override
public
void
onItemClick
(
View
v
,
int
position
)
{
openWebURL
(
result
.
get
(
position
).
getLink
());
}
});
getActivityBuffer
().
safely
(
new
ActivityBuffer
.
IRunnable
()
{
@Override
public
void
run
(
Activity
pActivity
)
{
try
{
trainingFeedRecyclerView
=
getActivity
().
findViewById
(
R
.
id
.
training_feed_recycler_view
);
trainingFeedRecyclerView
.
setAdapter
(
trainingBlogAdapter
);
trainingFeedRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
}
catch
(
NullPointerException
e
)
{
e
.
printStackTrace
();
}
}
});
}
private
void
openWebURL
(
String
URL
)
{
Intent
browse
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
URL
));
startActivity
(
browse
);
}
private
class
updateDatabase
extends
AsyncTask
<
List
<
TrainingBlogPost
>,
Void
,
Integer
>
{
@Override
protected
Integer
doInBackground
(
List
<
TrainingBlogPost
>...
posts
)
{
appDatabase
.
dbDao
().
deleteTrainingBlogPosts
();
appDatabase
.
dbDao
().
insertTrainingBlogPosts
(
posts
[
0
]);
return
1
;
}
}
private
class
showTrainingBlogFromDB
extends
AsyncTask
<
String
,
Void
,
List
<
TrainingBlogPost
>>
{
@Override
protected
List
<
TrainingBlogPost
>
doInBackground
(
String
...
posts
)
{
return
appDatabase
.
dbDao
().
getAllTrainingBlogPosts
();
}
protected
void
onPostExecute
(
List
<
TrainingBlogPost
>
result
)
{
displayTrainingFeed
(
result
);
}
}
}
app/src/main/res/layout/blog_post_card.xml
0 → 100644
View file @
d389ad19
<?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/post_title"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textColor=
"#000000"
android:textSize=
"20sp"
android:textStyle=
"bold"
/>
<TextView
android:id=
"@+id/post_published"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
<TextView
android:id=
"@+id/post_content"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:textColor=
"#000000"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
\ No newline at end of file
app/src/main/res/layout/fragment_placement_blog.xml
0 → 100644
View file @
d389ad19
<RelativeLayout
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"
tools:context=
"in.ac.iitb.gymkhana.iitbapp.fragment.PlacementBlogFragment"
>
<android.support.v4.widget.SwipeRefreshLayout
android:id=
"@+id/placement_feed_swipe_refresh_layout"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
"in.ac.iitb.gymkhana.iitbapp.fragment.PlacementBlogFrament"
>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/placement_feed_recycler_view"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:paddingTop=
"8dp"
/>
</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
app/src/main/res/layout/fragment_pt_cell.xml
deleted
100644 → 0
View file @
a7a14165
<FrameLayout
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"
tools:context=
"in.ac.iitb.gymkhana.iitbapp.fragment.PTCellFragment"
>
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:text=
"@string/hello_blank_fragment"
/>
</FrameLayout>
app/src/main/res/layout/fragment_training_blog.xml
0 → 100644
View file @
d389ad19
<RelativeLayout
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"
tools:context=
"in.ac.iitb.gymkhana.iitbapp.fragment.TrainingBlogFragment"
>
<android.support.v4.widget.SwipeRefreshLayout
android:id=
"@+id/training_feed_swipe_refresh_layout"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
"in.ac.iitb.gymkhana.iitbapp.fragment.TrainingBlogFragment"
>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/training_feed_recycler_view"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:paddingTop=
"8dp"
/>
</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
app/src/main/res/menu/activity_main_drawer.xml
View file @
d389ad19
...
...
@@ -13,10 +13,16 @@
android:id=
"@+id/nav_my_events"
android:icon=
"@drawable/ic_event"
android:title=
"My Events"
/>
<item
android:id=
"@+id/nav_placement_blog"
android:icon=
"@drawable/ic_work_black_48dp"
android:title=
"Placement Blog"
/>
<item
android:id=
"@+id/nav_
pt_cell
"
android:id=
"@+id/nav_
training_blog
"
android:icon=
"@drawable/ic_work_black_48dp"
android:title=
"
PT Cell
"
/>
android:title=
"
Training Blog
"
/>
<item
android:id=
"@+id/nav_mess_menu"
...
...
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