Added assignment page

This commit is contained in:
Caesar2011
2018-07-06 00:27:32 +02:00
parent d492d13842
commit b49a3d01da
5 changed files with 230 additions and 9 deletions

View File

@@ -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 "";
} }

View File

@@ -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();
}
}

View File

@@ -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);
}
}
}

View File

@@ -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) {

View File

@@ -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);