Added assignment page
This commit is contained in:
@@ -17,25 +17,25 @@ class ModDetailAdapter extends FragmentStatePagerAdapter {
|
|||||||
super(fm);
|
super(fm);
|
||||||
this.mContext = context;
|
this.mContext = context;
|
||||||
this.mItemPos = itemPosition;
|
this.mItemPos = itemPosition;
|
||||||
log.d("constructor");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Returns total number of pages
|
// Returns total number of pages
|
||||||
@Override
|
@Override
|
||||||
public int getCount() {
|
public int getCount() {
|
||||||
return 2;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the fragment to display for that page
|
// Returns the fragment to display for that page
|
||||||
@Override
|
@Override
|
||||||
public Fragment getItem(int position) {
|
public Fragment getItem(int position) {
|
||||||
log.d("getItem");
|
|
||||||
switch (position) {
|
switch (position) {
|
||||||
case 0: // Fragment # 0 - This will show FirstFragment
|
case 0:
|
||||||
return ModDetailOverviewFragment.newInstance(mItemPos);
|
return ModDetailOverviewFragment.newInstance(mItemPos);
|
||||||
case 1: // Fragment # 0 - This will show FirstFragment different title
|
case 1:
|
||||||
return ModDetailAnnounceFragment.newInstance(mItemPos);
|
return ModDetailAnnounceFragment.newInstance(mItemPos);
|
||||||
|
case 2:
|
||||||
|
return ModDetailAssignmentFragment.newInstance(mItemPos);
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -49,6 +49,8 @@ class ModDetailAdapter extends FragmentStatePagerAdapter {
|
|||||||
return this.mContext.getResources().getString(R.string.overview);
|
return this.mContext.getResources().getString(R.string.overview);
|
||||||
case 1:
|
case 1:
|
||||||
return this.mContext.getResources().getString(R.string.announcements);
|
return this.mContext.getResources().getString(R.string.announcements);
|
||||||
|
case 2:
|
||||||
|
return this.mContext.getResources().getString(R.string.assignments);
|
||||||
default:
|
default:
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,117 @@
|
|||||||
|
package de.sebse.fuplanner.fragments.moddetails;
|
||||||
|
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.BaseExpandableListAdapter;
|
||||||
|
|
||||||
|
import de.sebse.fuplanner.R;
|
||||||
|
import de.sebse.fuplanner.services.KVV.types.Announcement;
|
||||||
|
import de.sebse.fuplanner.services.KVV.types.Assignment;
|
||||||
|
import de.sebse.fuplanner.services.KVV.types.Modules;
|
||||||
|
import de.sebse.fuplanner.tools.Conversion;
|
||||||
|
import de.sebse.fuplanner.tools.ui.ItemViewHolder;
|
||||||
|
import de.sebse.fuplanner.tools.ui.StringViewHolder;
|
||||||
|
|
||||||
|
public class ModDetailAssignmentAdapter extends BaseExpandableListAdapter {
|
||||||
|
|
||||||
|
private Modules.Module mModule = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getChild(int groupPosition, int childPosititon) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (String s : this.getGroup(groupPosition).getUrls())
|
||||||
|
{
|
||||||
|
sb.append(s);
|
||||||
|
sb.append("\n");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getChildId(int groupPosition, int childPosition) {
|
||||||
|
return childPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View getChildView(int groupPosition, final int childPosition,
|
||||||
|
boolean isLastChild, View convertView, ViewGroup parent) {
|
||||||
|
|
||||||
|
final String childText = getChild(groupPosition, childPosition);
|
||||||
|
|
||||||
|
if (convertView == null) {
|
||||||
|
convertView = LayoutInflater.from(parent.getContext())
|
||||||
|
.inflate(R.layout.list_all_string, parent, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
StringViewHolder itemHolder = new StringViewHolder(convertView);
|
||||||
|
itemHolder.mString.setText(childText);
|
||||||
|
|
||||||
|
return convertView;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getChildrenCount(int groupPosition) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Assignment getGroup(int groupPosition) {
|
||||||
|
if (this.mModule != null && this.mModule.assignments != null)
|
||||||
|
return this.mModule.assignments.get(groupPosition);
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getGroupCount() {
|
||||||
|
if (this.mModule != null && this.mModule.assignments != null)
|
||||||
|
return this.mModule.assignments.size();
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getGroupId(int groupPosition) {
|
||||||
|
return groupPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View getGroupView(int groupPosition, boolean isExpanded,
|
||||||
|
View convertView, ViewGroup parent) {
|
||||||
|
Assignment assignment = getGroup(groupPosition);
|
||||||
|
if (convertView == null) {
|
||||||
|
convertView = LayoutInflater.from(parent.getContext())
|
||||||
|
.inflate(R.layout.list_all_items, parent, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemViewHolder itemHolder = new ItemViewHolder(convertView);
|
||||||
|
itemHolder.mTitle.setText(assignment.getTitle());
|
||||||
|
if(assignment.isOpen())
|
||||||
|
itemHolder.mSubLeft.setText(itemHolder.mView.getResources().getText(R.string.open));
|
||||||
|
else
|
||||||
|
itemHolder.mSubLeft.setText(itemHolder.mView.getResources().getText(R.string.close));
|
||||||
|
itemHolder.mSubRight.setText(Conversion.getModifiedDateTime(assignment.getDueDate()));
|
||||||
|
|
||||||
|
return convertView;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasStableIds() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isChildSelectable(int groupPosition, int childPosition) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModule(Modules.Module module) {
|
||||||
|
this.mModule = module;
|
||||||
|
this.setModule();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModule() {
|
||||||
|
this.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
package de.sebse.fuplanner.fragments.moddetails;
|
||||||
|
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.support.v4.widget.SwipeRefreshLayout;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ExpandableListView;
|
||||||
|
|
||||||
|
import de.sebse.fuplanner.MainActivity;
|
||||||
|
import de.sebse.fuplanner.R;
|
||||||
|
import de.sebse.fuplanner.services.KVV.KVV;
|
||||||
|
import de.sebse.fuplanner.services.KVV.types.Modules;
|
||||||
|
import de.sebse.fuplanner.tools.logging.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A simple {@link Fragment} subclass.
|
||||||
|
* Use the {@link ModDetailAssignmentFragment#newInstance} factory method to
|
||||||
|
* create an instance of this fragment.
|
||||||
|
*/
|
||||||
|
public class ModDetailAssignmentFragment extends Fragment {
|
||||||
|
// TODO: Rename parameter arguments, choose names that match
|
||||||
|
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
|
||||||
|
private static final String ARG_POSITION = "itemPosition";
|
||||||
|
|
||||||
|
// TODO: Rename and change types of parameters
|
||||||
|
private int mItemPos;
|
||||||
|
private Logger log = new Logger(this);
|
||||||
|
private ModDetailAssignmentAdapter adapter;
|
||||||
|
private SwipeRefreshLayout swipeLayout;
|
||||||
|
|
||||||
|
|
||||||
|
public ModDetailAssignmentFragment() {
|
||||||
|
// Required empty public constructor
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use this factory method to create a new instance of
|
||||||
|
* this fragment using the provided parameters.
|
||||||
|
*
|
||||||
|
* @param itemPosition Item position in module list.
|
||||||
|
* @return A new instance of fragment ModDetailAnnounceFragment.
|
||||||
|
*/
|
||||||
|
// TODO: Rename and change types and number of parameters
|
||||||
|
public static ModDetailAssignmentFragment newInstance(int itemPosition) {
|
||||||
|
ModDetailAssignmentFragment fragment = new ModDetailAssignmentFragment();
|
||||||
|
Bundle args = new Bundle();
|
||||||
|
args.putInt(ARG_POSITION, itemPosition);
|
||||||
|
fragment.setArguments(args);
|
||||||
|
return fragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
if (getArguments() != null) {
|
||||||
|
mItemPos = getArguments().getInt(ARG_POSITION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
||||||
|
Bundle savedInstanceState) {
|
||||||
|
// Inflate the layout for this fragment
|
||||||
|
View view = inflater.inflate(R.layout.fragment_mod_detail_announce, container, false);
|
||||||
|
// Set the adapter
|
||||||
|
Context context = view.getContext();
|
||||||
|
ExpandableListView expandableListView = view.findViewById(R.id.list);
|
||||||
|
//expandableListView.setLayoutManager(new LinearLayoutManager(context));
|
||||||
|
adapter = new ModDetailAssignmentAdapter();
|
||||||
|
expandableListView.setAdapter(adapter);
|
||||||
|
|
||||||
|
// Getting SwipeContainerLayout
|
||||||
|
swipeLayout = view.findViewById(R.id.swipe_container);
|
||||||
|
// Adding Listener
|
||||||
|
swipeLayout.setOnRefreshListener(() -> refresh(true));
|
||||||
|
refresh(false);
|
||||||
|
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refresh(boolean forceRefresh) {
|
||||||
|
if (getActivity() != null) {
|
||||||
|
KVV kvv = ((MainActivity) getActivity()).getKVV();
|
||||||
|
kvv.getModuleList((Modules success) -> {
|
||||||
|
Modules.Module module = success.get(mItemPos);
|
||||||
|
adapter.setModule(module);
|
||||||
|
kvv.getModuleAssignments(module, success1 -> {
|
||||||
|
adapter.setModule();
|
||||||
|
swipeLayout.setRefreshing(false);
|
||||||
|
}, error -> {
|
||||||
|
swipeLayout.setRefreshing(false);
|
||||||
|
log.e(error);
|
||||||
|
});
|
||||||
|
}, error -> {
|
||||||
|
swipeLayout.setRefreshing(false);
|
||||||
|
log.e(error);
|
||||||
|
}, forceRefresh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -141,7 +141,6 @@ public class KVVModuleList extends HTTPService {
|
|||||||
AtomicReference<NetworkError> lastError = new AtomicReference<>(null);
|
AtomicReference<NetworkError> lastError = new AtomicReference<>(null);
|
||||||
final int items = 4;
|
final int items = 4;
|
||||||
NetworkCallback<Modules.Module> successCb = success -> {
|
NetworkCallback<Modules.Module> successCb = success -> {
|
||||||
log.d("items-d", returns.get());
|
|
||||||
returns.getAndIncrement();
|
returns.getAndIncrement();
|
||||||
callback.onResponse(Pair.create(module, false));
|
callback.onResponse(Pair.create(module, false));
|
||||||
if (returns.get() == items) {
|
if (returns.get() == items) {
|
||||||
@@ -151,7 +150,6 @@ public class KVVModuleList extends HTTPService {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
NetworkErrorCallback errorCb = error -> {
|
NetworkErrorCallback errorCb = error -> {
|
||||||
log.d("items-e", returns.get());
|
|
||||||
lastError.set(error);
|
lastError.set(error);
|
||||||
returns.getAndIncrement();
|
returns.getAndIncrement();
|
||||||
if (returns.get() == items) {
|
if (returns.get() == items) {
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import de.sebse.fuplanner.tools.network.NetworkErrorCallback;
|
|||||||
public class AsyncQueue {
|
public class AsyncQueue {
|
||||||
private HashMap<String, LinkedList<AsyncQueueCallback>> mQueues = new HashMap<>();
|
private HashMap<String, LinkedList<AsyncQueueCallback>> mQueues = new HashMap<>();
|
||||||
private HashMap<String, Boolean> mRunnings = new HashMap<>();
|
private HashMap<String, Boolean> mRunnings = new HashMap<>();
|
||||||
private Logger log = new Logger(this);
|
|
||||||
|
|
||||||
public void add(String hash, AsyncQueueCallback callback) {
|
public void add(String hash, AsyncQueueCallback callback) {
|
||||||
if (isRunning(hash))
|
if (isRunning(hash))
|
||||||
@@ -22,7 +21,6 @@ public class AsyncQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void next(String hash) {
|
public void next(String hash) {
|
||||||
log.d("next", hash);
|
|
||||||
AsyncQueueCallback callback = getQueue(hash).pollFirst();
|
AsyncQueueCallback callback = getQueue(hash).pollFirst();
|
||||||
if (callback == null)
|
if (callback == null)
|
||||||
setRunning(hash, false);
|
setRunning(hash, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user