use of com.instructure.canvasapi2.models.Section in project instructure-android by instructure.
the class PublishPollActivity method setupCourseSpinner.
// /////////////////////////////////////////////////////////////////////////
// Helpers
// /////////////////////////////////////////////////////////////////////////
private void setupCourseSpinner(List<Course> courseList) {
// We only want courses we're a teacher for if we're trying to publish a poll
Iterator<Course> iterator = courseList.iterator();
while (iterator.hasNext()) {
if (!iterator.next().isTeacher()) {
iterator.remove();
}
}
if (courseList.size() == 0 || !courseList.get(0).getName().equals(getString(R.string.selectCourse))) {
Course selectCourse = new Course();
selectCourse.setId(Long.MIN_VALUE);
selectCourse.setName(getString(R.string.selectCourse));
courseList.add(0, selectCourse);
}
courseAdapter = new CourseSpinnerAdapter(this, android.R.layout.simple_spinner_dropdown_item, courseList);
coursesSpinner.setAdapter(courseAdapter);
coursesSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Course course = (Course) parent.getAdapter().getItem(position);
// Handle the loading cell.
if (course == null || course.getEnrollments() == null) {
return;
}
if (!isCourseTermActive(course)) {
AppMsg.makeText(PublishPollActivity.this, getString(R.string.courseTermInactive), AppMsg.STYLE_WARNING).show();
return;
}
currentCourse = course;
// unselect all the selections, if we don't it still thinks some are selected when we go to another course
for (int i = 0; i < sectionListView.getCount(); i++) {
sectionListView.setItemChecked(i, false);
}
SectionManager.getAllSectionsForCourse(course.getId(), new StatusCallback<List<Section>>() {
@Override
public void onResponse(@NonNull retrofit2.Response<List<Section>> response, @NonNull com.instructure.canvasapi2.utils.LinkHeaders linkHeaders, @NonNull ApiType type) {
setupSectionAdapter(response.body());
ApplicationManager.saveSections(PublishPollActivity.this, response.body(), ((Course) coursesSpinner.getSelectedItem()).getId());
}
}, true);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
use of com.instructure.canvasapi2.models.Section in project instructure-android by instructure.
the class PollSessionListFragment method generateCSV.
private void generateCSV() {
String csv = "";
csv += "Poll Title, Poll Session, Course Name, Section Name, User Name, Answer, Date\n";
for (int i = 0; i < getItemCount(); i++) {
PollSession pollSession = getItem(i);
if (pollSession.getPoll_submissions() != null) {
for (PollSubmission pollSubmission : pollSession.getPoll_submissions()) {
// now add all the necessary stuff to the csv string
csv += poll.getQuestion() + ",";
csv += pollSession.getId() + ",";
csv += courseMap.get(pollSession.getCourse_id()).getName() + ",";
csv += sectionMap.get(pollSession.getCourse_section_id()).getName() + ",";
csv += pollSubmission.getUser_id() + ",";
// of just an id
if (pollChoiceMap != null && pollChoiceMap.containsKey(pollSubmission.getPoll_choice_id())) {
csv += pollChoiceMap.get(pollSubmission.getPoll_choice_id()).getText() + ",";
} else {
csv += pollSubmission.getPoll_choice_id() + ",";
}
csv += pollSubmission.getCreated_at() + "\n";
}
} else {
csv += poll.getQuestion() + ",";
csv += pollSession.getId() + ",";
csv += courseMap.get(pollSession.getCourse_id()).getName() + ",";
csv += sectionMap.get(pollSession.getCourse_section_id()).getName() + ",";
csv += "" + ",";
csv += "" + ",";
csv += pollSession.getCreated_at() + "\n";
}
}
// check to make sure there is external storage
String state = Environment.getExternalStorageState();
if (!Environment.MEDIA_MOUNTED.equals(state)) {
// it's not there, so the reset of this won't work. Let the user know.
AppMsg.makeText(getActivity(), getString(R.string.errorGeneratingCSV), AppMsg.STYLE_ERROR).show();
return;
}
File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), getString(R.string.generatedCSVFolderName));
// Make sure the directory exists.
boolean success = path.mkdirs();
if (!success) {
// return false)
if (!path.isDirectory()) {
// it's not a directory and wasn't created, so we need to return with an error
AppMsg.makeText(getActivity(), getString(R.string.errorGeneratingCSV), AppMsg.STYLE_ERROR).show();
return;
}
}
Time now = new Time();
now.setToNow();
File file = new File(path, "csv_" + now.format3339(false) + ".csv");
try {
// write the string to a file
FileWriter out = new FileWriter(file);
out.write(csv);
out.close();
} catch (IOException e) {
// Unable to create file
AppMsg.makeText(getActivity(), getString(R.string.errorGeneratingCSV), AppMsg.STYLE_ERROR).show();
}
// file is generated, not share it
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
shareIntent.setType("text/csv");
startActivity(Intent.createChooser(shareIntent, getString(R.string.shareCSV)));
}
use of com.instructure.canvasapi2.models.Section in project instructure-android by instructure.
the class PollSessionListFragment method setupCallbacks.
@Override
public void setupCallbacks() {
pollSessionCallback = new StatusCallback<PollSessionResponse>() {
@Override
public void onResponse(@NonNull Response<PollSessionResponse> response, @NonNull LinkHeaders linkHeaders, @NonNull ApiType type) {
if (getActivity() == null || type.isCache())
return;
List<PollSession> pollSessions = response.body().getPollSessions();
sessionNextUrl = linkHeaders.nextUrl;
if (pollSessions != null) {
for (PollSession pollSession : pollSessions) {
addItem(pollSession);
SectionManager.getSection(pollSession.getCourse_id(), pollSession.getCourse_section_id(), sectionCallback, true);
}
}
}
@Override
public void onFinished(ApiType type) {
if (swipeRefreshLayout != null) {
swipeRefreshLayout.setRefreshing(false);
}
}
};
sectionCallback = new StatusCallback<Section>() {
@Override
public void onResponse(@NonNull Response<Section> response, @NonNull LinkHeaders linkHeaders, @NonNull ApiType type) {
if (getActivity() == null || type.isCache())
return;
sectionMap.put(response.body().getId(), response.body());
notifyDataSetChanged();
}
};
pollChoiceCallback = new StatusCallback<PollChoiceResponse>() {
@Override
public void onResponse(@NonNull Response<PollChoiceResponse> response, @NonNull LinkHeaders linkHeaders, @NonNull ApiType type) {
if (getActivity() == null || type.isCache())
return;
List<PollChoice> pollChoices = response.body().getPollChoices();
if (pollChoices != null) {
pollChoiceArrayList.addAll(pollChoices);
}
// or generate the CSV, depending on which action they selected
if (!StatusCallback.moreCallsExist(linkHeaders)) {
if (fromGenerateCSV) {
// generate a map from the array list of poll choices
for (PollChoice choice : pollChoiceArrayList) {
pollChoiceMap.put(choice.getId(), choice);
}
generateCSV();
} else {
AddQuestionFragment addQuestionFragment = new AddQuestionFragment();
// populate the current data with the bundle
Bundle bundle = new Bundle();
bundle.putParcelable(Constants.POLL_BUNDLE, poll);
bundle.putParcelableArrayList(Constants.POLL_CHOICES, pollChoiceArrayList);
addQuestionFragment.setArguments(bundle);
((FragmentManagerActivity) getActivity()).swapFragments(addQuestionFragment, AddQuestionFragment.class.getSimpleName(), R.anim.slide_in_from_bottom, 0, 0, R.anim.slide_out_to_bottom);
}
} else {
// otherwise, get the next group of poll choices.
PollsManager.getNextPagePollChoices(linkHeaders.nextUrl, pollChoiceCallback, false);
}
}
@Override
public void onFinished(ApiType type) {
if (swipeRefreshLayout != null) {
swipeRefreshLayout.setRefreshing(false);
}
}
};
responseCanvasCallback = new StatusCallback<ResponseBody>() {
@Override
public void onFail(@Nullable Call<ResponseBody> call, @NonNull Throwable error, @Nullable Response response) {
AppMsg.makeText(getActivity(), getString(R.string.errorDeletingPollSession), AppMsg.STYLE_ERROR).show();
// we didn't actually delete anything, but we removed the item from the list to make the animation smoother, so now
// lets get the poll sessions again
reloadData();
}
};
}
use of com.instructure.canvasapi2.models.Section in project instructure-android by instructure.
the class CanvasContextTest method getGenericContext_TestSection.
@Test
public void getGenericContext_TestSection() {
long id = 1234;
String name = "hodor";
Section section = new Section();
section.setName(name);
section.setId(id);
assertEquals(true, section.equals(CanvasContext.getGenericContext(CanvasContext.Type.SECTION, id, name)));
}
use of com.instructure.canvasapi2.models.Section in project instructure-android by instructure.
the class CanvasContextTest method typeIsSection_TestTrue.
@Test
public void typeIsSection_TestTrue() {
Section section = new Section();
assertEquals(true, CanvasContext.Type.isSection(section));
}
Aggregations