use of com.instructure.interactions.Navigation in project instructure-android by instructure.
the class AssignmentListFragment method onCreateView.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mRootView = inflater.inflate(R.layout.assignment_list_layout, container, false);
mToolbar = mRootView.findViewById(R.id.toolbar);
setUpCallbacks();
mAdapterToAssignmentsCallback = new AdapterToAssignmentsCallback() {
@Override
public void setTermSpinnerState(boolean isEnabled) {
mTermSpinner.setEnabled(isEnabled);
if (mTermAdapter != null) {
if (isEnabled) {
mTermAdapter.setIsLoading(false);
} else {
mTermAdapter.setIsLoading(true);
}
mTermAdapter.notifyDataSetChanged();
}
}
@Override
public void onRowClicked(Assignment assignment, int position, boolean isOpenDetail) {
Navigation navigation = getNavigation();
if (navigation != null) {
Bundle bundle = AssignmentFragment.Companion.createBundle((Course) getCanvasContext(), assignment);
navigation.addFragment(FragUtils.getFrag(AssignmentFragment.class, bundle));
}
}
@Override
public void onRefreshFinished() {
setRefreshing(false);
}
};
// Just load the AssignmentGroup list in the case that its a Group
mRecyclerAdapter = new AssignmentDateListRecyclerAdapter(getContext(), getCanvasContext(), mGradingPeriodsCallback, mAdapterToAssignmentsCallback);
configureRecyclerView(mRootView, getContext(), mRecyclerAdapter, R.id.swipeRefreshLayout, R.id.emptyPandaView, R.id.listView);
mTermSpinner = mRootView.findViewById(R.id.termSpinner);
mTermSpinnerLayout = mRootView.findViewById(R.id.termSpinnerLayout);
AppBarLayout appBarLayout = mRootView.findViewById(R.id.appbar);
View shadow = mRootView.findViewById(R.id.shadow);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
shadow.setVisibility(View.GONE);
} else {
shadow.setVisibility(View.VISIBLE);
}
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int i) {
// workaround for Toolbar not showing with swipe to refresh
if (i == 0) {
setRefreshingEnabled(true);
} else {
setRefreshingEnabled(false);
}
}
});
return mRootView;
}
use of com.instructure.interactions.Navigation in project instructure-android by instructure.
the class PageListFragment method onCreateView.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
mRootView = getLayoutInflater().inflate(R.layout.fragment_course_pages, container, false);
mToolbar = mRootView.findViewById(R.id.toolbar);
mRecyclerAdapter = new PageListRecyclerAdapter(getContext(), getCanvasContext(), new AdapterToFragmentCallback<Page>() {
@Override
public void onRowClicked(Page page, int position, boolean isOpenDetail) {
Navigation navigation = getNavigation();
if (navigation != null) {
Bundle bundle = PageDetailsFragment.Companion.createBundle(page.getUrl(), getCanvasContext());
navigation.addFragment(FragUtils.getFrag(PageDetailsFragment.class, bundle));
}
}
@Override
public void onRefreshFinished() {
setRefreshing(false);
}
}, mDefaultSelectedPageTitle);
configureRecyclerView(mRootView, getContext(), mRecyclerAdapter, R.id.swipeRefreshLayout, R.id.emptyPandaView, R.id.listView);
return mRootView;
}
use of com.instructure.interactions.Navigation in project instructure-android by instructure.
the class PeopleListFragment method onCreateView.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mAdapterToFragmentCallback = new AdapterToFragmentCallback<User>() {
@Override
public void onRowClicked(User user, int position, boolean isOpenDetail) {
Navigation navigation = getNavigation();
if (navigation != null) {
navigation.addFragment(FragUtils.getFrag(PeopleDetailsFragment.class, PeopleDetailsFragment.createBundle(user, getCanvasContext())));
}
}
@Override
public void onRefreshFinished() {
setRefreshing(false);
}
};
mRootView = getLayoutInflater().inflate(R.layout.fragment_people_list, container, false);
mToolbar = mRootView.findViewById(R.id.toolbar);
CardView cardView = mRootView.findViewById(R.id.cardView);
if (cardView != null) {
cardView.setCardBackgroundColor(Color.WHITE);
}
mRecyclerAdapter = new PeopleListRecyclerAdapter(getContext(), getCanvasContext(), mAdapterToFragmentCallback);
configureRecyclerView(mRootView, getContext(), mRecyclerAdapter, R.id.swipeRefreshLayout, R.id.emptyPandaView, R.id.listView);
return mRootView;
}
use of com.instructure.interactions.Navigation in project instructure-android by instructure.
the class QuizStartFragment method showQuiz.
private void showQuiz() {
Navigation navigation = getNavigation();
if (navigation != null) {
// Post the android session started event
QuizManager.postQuizStartedEvent(getCanvasContext(), quizSubmission.getQuizId(), quizSubmission.getId(), true, quizStartSessionCallback);
Bundle bundle = QuizQuestionsFragment.createBundle(getCanvasContext(), quiz, quizSubmission, shouldLetAnswer);
navigation.addFragment(FragUtils.getFrag(QuizQuestionsFragment.class, bundle));
}
}
use of com.instructure.interactions.Navigation in project instructure-android by instructure.
the class SubmissionDetailsFragment method setupListeners.
private void setupListeners() {
if (addSubmission != null) {
addSubmission.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Open Submission view, "Go To Discussion" or "Go To Quiz"
if (// Allow the user to go to the discussion.
assignment.getDiscussionTopicHeader() != null && assignment.getDiscussionTopicHeader().getId() > 0 && assignment.getCourseId() > 0) {
String url = DiscussionTopic.getDiscussionURL(ApiPrefs.getProtocol(), ApiPrefs.getDomain(), assignment.getCourseId(), assignment.getDiscussionTopicHeader().getId());
if (!RouterUtils.canRouteInternally(getActivity(), url, ApiPrefs.getDomain(), true)) {
Intent intent = new Intent(getActivity(), InternalWebViewActivity.class);
getActivity().startActivity(intent);
}
} else if (assignment.getQuizId() > 0) {
String url = getQuizURL(getActivity(), assignment.getCourseId(), assignment.getQuizId());
if (!RouterUtils.canRouteInternally(getActivity(), url, ApiPrefs.getDomain(), true)) {
Intent intent = new Intent(getActivity(), InternalWebViewActivity.class);
getActivity().startActivity(intent);
}
} else if (assignment.getTurnInType() == Assignment.TURN_IN_TYPE.EXTERNAL_TOOL) {
// TODO stream doesn't pass the LTI url. Grab it now if we need it
String authenticationURL = assignment.getUrl();
if (authenticationURL == null || authenticationURL.equalsIgnoreCase("null")) {
// get the assignment
AssignmentManager.getAssignment(assignment.getId(), course.getId(), true, canvasCallbackAssignment);
return;
} else {
SubmissionManager.getLtiFromAuthenticationUrl(assignment.getUrl(), canvasCallbackLTITool, true);
}
} else {
if (!APIHelper.hasNetworkConnection()) {
Toast.makeText(getContext(), getContext().getString(R.string.notAvailableOffline), Toast.LENGTH_SHORT).show();
return;
}
// open add submission view
// start it for xml so we can update the results if we need to. Need to call it on the parent fragment
// and it will call onActivityResult in the current child fragment.
Navigation navigation = getNavigation();
if (navigation != null) {
Bundle bundle = AddSubmissionFragment.createBundle((Course) getCanvasContext(), assignment, isOnlineTextAllowed, isUrlEntryAllowed, isFileEntryAllowed, isMediaRecording);
navigation.addFragment(FragUtils.getFrag(AddSubmissionFragment.class, bundle));
}
}
}
});
}
// Handle pressing of the send button.
if (submitComment != null) {
submitComment.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// try to submit the comment
if (!APIHelper.hasNetworkConnection()) {
Toast.makeText(getContext(), getContext().getString(R.string.notAvailableOffline), Toast.LENGTH_SHORT).show();
return;
}
sendMessage(assignment.getId());
}
});
mediaComment.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
ListView listView = new ListView(getActivity());
AttachmentAdapter adapter = new AttachmentAdapter(getActivity(), android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.discussion_attachments));
listView.setAdapter(adapter);
listView.setDivider(null);
listView.setPadding((int) Utils.dpToPx(getActivity(), 10), (int) Utils.dpToPx(getActivity(), 10), (int) Utils.dpToPx(getActivity(), 10), (int) Utils.dpToPx(getActivity(), 16));
final AlertDialog dialog = new AlertDialog.Builder(getActivity()).setTitle(R.string.commentUpload).setView(listView).create();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch(position) {
case 0:
// Use File Upload Dialog
showUploadFileDialog();
dialog.dismiss();
break;
case 1:
if (message.getText().toString().trim().length() != 0 || attachmentIds.size() > 0) {
Toast.makeText(getContext(), R.string.unableToUploadMediaComment, Toast.LENGTH_SHORT).show();
} else {
// Use Notorious
Intent intent = NotoriousMediaUploadPicker.createIntentForSubmissionComment(getContext(), assignment);
assignmentFragment.get().startActivityForResult(intent, RequestCodes.NOTORIOUS_REQUEST);
dialog.dismiss();
}
break;
default:
break;
}
}
});
dialog.show();
}
});
}
// Handle if they hit the send button in landscape mode.
message.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
// Try to send the message.
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage(assignment.getId());
// Hide keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(message.getWindowToken(), 0);
return true;
}
return false;
}
});
if (listView != null) {
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
Submission submission = (Submission) adapter.getAdapter().getItem(position);
// it has the details that we need
if (submission.getSubmissionComments().size() == 0) {
if (submission.getSubmissionType().equals("online_upload") || submission.getSubmissionType().equals("media_recording")) {
if (submission.getAttachments().size() == 1) {
// makes more sense to open the file since they should already have it on their device
if (submission.getAttachments().get(0).getContentType().contains("pdf")) {
startActivity(StudentSubmissionActivity.createIntent(getActivity(), course, assignment, new GradeableStudentSubmission(new StudentAssignee(ApiPrefs.getUser(), ApiPrefs.getUser().getId(), ApiPrefs.getUser().getName()), null, false)));
} else {
openMedia(submission.getAttachments().get(0).getContentType(), submission.getAttachments().get(0).getUrl(), submission.getAttachments().get(0).getFilename());
}
} else if (submission.getMediaComment() != null) {
MediaComment mediaComment = submission.getMediaComment();
openMedia(mediaComment.getContentType(), mediaComment.getUrl(), mediaComment.get_fileName());
} else {
// show a list dialog of the files to download.
showFileList(submission.getAttachments());
}
} else if (submission.getSubmissionType().equals("online_text_entry")) {
Navigation navigation = getNavigation();
if (navigation != null) {
Bundle bundle = InternalWebviewFragment.Companion.createBundleHTML(getCanvasContext(), submission.getBody());
navigation.addFragment(FragUtils.getFrag(InternalWebviewFragment.class, bundle));
}
} else if (submission.getSubmissionType().equals("online_url")) {
// Take the user to viewing the online url submission. If the image hasn't processed yet they'll see a toast and it
// will match what the web does - show the url and say it might be different from when they submitted.
Navigation navigation = getNavigation();
if (navigation != null) {
Bundle bundle = SubmissionViewOnlineURLFragment.createBundle(getCanvasContext(), submission);
navigation.addFragment(FragUtils.getFrag(SubmissionViewOnlineURLFragment.class, bundle));
}
if (submission.getAttachments().size() == 0) {
// the server hasn't processed the image for the submitted url yet, show a crouton and reload
showToast(R.string.itemStillProcessing);
loadData(assignment.getId(), false, false);
}
}
}
}
});
}
addComment.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!APIHelper.hasNetworkConnection()) {
Toast.makeText(getContext(), getContext().getString(R.string.notAvailableOffline), Toast.LENGTH_SHORT).show();
return;
}
// Only show the header if it hasn't been added prior.
if (listView.getHeaderViewsCount() == 1) {
listView.addHeaderView(composeHeaderView, null, false);
}
// add the compose header (the comment box)
composeHeaderView.setVisibility(View.VISIBLE);
}
});
}
Aggregations