Search in sources :

Example 31 with User

use of com.instructure.canvasapi2.models.User in project instructure-android by instructure.

the class RoboTesting method setAppStatePrefs.

static void setAppStatePrefs() {
    // save token
    ApiPrefs.setToken(BuildConfig.ROBO_USER_TOKEN);
    ApiPrefs.setDomain(BuildConfig.ROBO_USER_DOMAIN);
    User user = new Gson().fromJson(BuildConfig.ROBO_USER_JSON, User.class);
    ApiPrefs.setUser(user);
}
Also used : User(com.instructure.canvasapi2.models.User) Gson(com.google.gson.Gson)

Example 32 with User

use of com.instructure.canvasapi2.models.User in project instructure-android by instructure.

the class PeopleDetailsFragment method setupUserViews.

private void setupUserViews() {
    if (user != null) {
        name.setText(user.getName());
        ProfileUtils.loadAvatarForUser(userAvatar, user);
        // show the bio if one exists
        if (!TextUtils.isEmpty(user.getBio()) && !user.getBio().equals("null")) {
            bioText.setVisibility(View.VISIBLE);
            bioText.setText(user.getBio());
        }
        String roles = "";
        for (Enrollment enrollment : user.getEnrollments()) {
            roles += enrollment.getType() + " ";
        }
        userRole.setText(roles);
        userBackground.setBackgroundColor(ColorKeeper.getOrGenerateColor(getCanvasContext()));
    }
}
Also used : Enrollment(com.instructure.canvasapi2.models.Enrollment)

Example 33 with User

use of com.instructure.canvasapi2.models.User 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;
}
Also used : User(com.instructure.canvasapi2.models.User) Navigation(com.instructure.interactions.Navigation) CardView(android.support.v7.widget.CardView) PeopleListRecyclerAdapter(com.instructure.candroid.adapter.PeopleListRecyclerAdapter)

Example 34 with User

use of com.instructure.canvasapi2.models.User 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);
        }
    });
}
Also used : AlertDialog(android.support.v7.app.AlertDialog) StudentAssignee(com.instructure.canvasapi2.models.StudentAssignee) InputMethodManager(android.view.inputmethod.InputMethodManager) KeyEvent(android.view.KeyEvent) ListView(android.widget.ListView) TextView(android.widget.TextView) Course(com.instructure.canvasapi2.models.Course) MediaComment(com.instructure.canvasapi2.models.MediaComment) Navigation(com.instructure.interactions.Navigation) OnItemClickListener(android.widget.AdapterView.OnItemClickListener) Submission(com.instructure.canvasapi2.models.Submission) GradeableStudentSubmission(com.instructure.canvasapi2.models.GradeableStudentSubmission) Bundle(android.os.Bundle) Intent(android.content.Intent) ImageView(android.widget.ImageView) AttachmentView(com.instructure.candroid.view.AttachmentView) CircleImageView(de.hdodenhof.circleimageview.CircleImageView) View(android.view.View) AdapterView(android.widget.AdapterView) BeforePageView(com.instructure.canvasapi2.utils.pageview.BeforePageView) PageView(com.instructure.canvasapi2.utils.pageview.PageView) TextView(android.widget.TextView) ListView(android.widget.ListView) Paint(android.graphics.Paint) InternalWebViewActivity(com.instructure.candroid.activity.InternalWebViewActivity) GradeableStudentSubmission(com.instructure.canvasapi2.models.GradeableStudentSubmission) OnClickListener(android.view.View.OnClickListener) AdapterView(android.widget.AdapterView)

Example 35 with User

use of com.instructure.canvasapi2.models.User in project instructure-android by instructure.

the class FileUtils method showPdfDocument.

public static void showPdfDocument(Uri uri, OpenMediaAsyncTaskLoader.LoadedMedia loadedMedia, final Context context) {
    if (!PSPDFKitPreferences.get(context).isAnnotationCreatorSet()) {
        User cachedUser = ApiPrefs.getUser();
        String userName = "";
        if (cachedUser != null) {
            userName = ApiPrefs.getUser().getShortName();
        }
        PSPDFKitPreferences.get(context).setAnnotationCreator(userName);
    }
    final PdfActivityConfiguration pspdfActivityConfiguration;
    if (loadedMedia.isSubmission()) {
        // We don't want to allow users to edit for submission viewing
        pspdfActivityConfiguration = new PdfActivityConfiguration.Builder(context).scrollDirection(PageScrollDirection.HORIZONTAL).showThumbnailGrid().setThumbnailBarMode(ThumbnailBarMode.THUMBNAIL_BAR_MODE_DEFAULT).disableAnnotationEditing().disableAnnotationList().disableDocumentEditor().fitMode(PageFitMode.FIT_TO_WIDTH).build();
    } else {
        // Standard behavior
        pspdfActivityConfiguration = new PdfActivityConfiguration.Builder(context).scrollDirection(PageScrollDirection.HORIZONTAL).showThumbnailGrid().setThumbnailBarMode(ThumbnailBarMode.THUMBNAIL_BAR_MODE_DEFAULT).enableDocumentEditor().enabledAnnotationTools(setupAnnotationCreationList()).editableAnnotationTypes(setupAnnotationEditList()).fitMode(PageFitMode.FIT_TO_WIDTH).build();
    }
    if (PSPDFKit.isOpenableUri(context, uri)) {
        Intent intent = PdfActivityIntentBuilder.fromUri(context, uri).configuration(pspdfActivityConfiguration).activityClass(CandroidPSPDFActivity.class).build();
        context.startActivity(intent);
    } else {
        // If we still can't open this PDF, we will then attempt to pass it off to the user's pdfviewer
        context.startActivity(loadedMedia.getIntent());
    }
}
Also used : CandroidPSPDFActivity(com.instructure.candroid.activity.CandroidPSPDFActivity) User(com.instructure.canvasapi2.models.User) Intent(android.content.Intent) PdfActivityConfiguration(com.pspdfkit.configuration.activity.PdfActivityConfiguration)

Aggregations

User (models.User)30 User (com.instructure.canvasapi2.models.User)25 RestParams (com.instructure.canvasapi2.builders.RestParams)22 RestBuilder (com.instructure.canvasapi2.builders.RestBuilder)19 Test (org.junit.Test)16 LinkHeaders (com.instructure.canvasapi2.utils.LinkHeaders)8 CurrentUser (actions.CurrentUser)7 CurrentUser.currentUser (actions.CurrentUser.currentUser)7 NonNull (android.support.annotation.NonNull)7 View (android.view.View)7 List (java.util.List)7 Result (play.mvc.Result)7 ApiType (com.instructure.canvasapi2.utils.ApiType)6 ArrayList (java.util.ArrayList)6 Module (models.Module)6 UnitTest (play.test.UnitTest)6 Intent (android.content.Intent)5 RoleHolderPresent (be.objectify.deadbolt.actions.RoleHolderPresent)5 StatusCallback (com.instructure.canvasapi2.StatusCallback)5 Course (com.instructure.canvasapi2.models.Course)5