Search in sources :

Example 61 with User

use of com.nextcloud.client.account.User in project android by nextcloud.

the class FileDisplayActivity method startMediaPreview.

/**
 * Stars the preview of an already down media {@link OCFile}.
 *
 * @param file                  Media {@link OCFile} to preview.
 * @param startPlaybackPosition Media position where the playback will be started, in milliseconds.
 * @param autoplay              When 'true', the playback will start without user interactions.
 */
public void startMediaPreview(OCFile file, long startPlaybackPosition, boolean autoplay, boolean showPreview, boolean streamMedia) {
    Optional<User> user = getUser();
    if (!user.isPresent()) {
        // not reachable under normal conditions
        return;
    }
    if (showPreview && file.isDown() && !file.isDownloading() || streamMedia) {
        showSortListGroup(false);
        Fragment mediaFragment = PreviewMediaFragment.newInstance(file, user.get(), startPlaybackPosition, autoplay);
        setLeftFragment(mediaFragment);
        configureToolbarForMediaPreview(file);
    } else {
        Intent previewIntent = new Intent();
        previewIntent.putExtra(EXTRA_FILE, file);
        previewIntent.putExtra(PreviewVideoActivity.EXTRA_START_POSITION, startPlaybackPosition);
        previewIntent.putExtra(PreviewVideoActivity.EXTRA_AUTOPLAY, autoplay);
        FileOperationsHelper fileOperationsHelper = new FileOperationsHelper(this, getUserAccountManager(), connectivityService);
        fileOperationsHelper.startSyncForFileAndIntent(file, previewIntent);
    }
}
Also used : FileOperationsHelper(com.owncloud.android.ui.helpers.FileOperationsHelper) User(com.nextcloud.client.account.User) Intent(android.content.Intent) OCFileListFragment(com.owncloud.android.ui.fragment.OCFileListFragment) UnifiedSearchFragment(com.owncloud.android.ui.fragment.UnifiedSearchFragment) Fragment(androidx.fragment.app.Fragment) TaskRetainerFragment(com.owncloud.android.ui.fragment.TaskRetainerFragment) FileFragment(com.owncloud.android.ui.fragment.FileFragment) PreviewTextStringFragment(com.owncloud.android.ui.preview.PreviewTextStringFragment) PreviewTextFragment(com.owncloud.android.ui.preview.PreviewTextFragment) PreviewTextFileFragment(com.owncloud.android.ui.preview.PreviewTextFileFragment) GalleryFragment(com.owncloud.android.ui.fragment.GalleryFragment) SortingOrderDialogFragment(com.owncloud.android.ui.dialog.SortingOrderDialogFragment) PreviewImageFragment(com.owncloud.android.ui.preview.PreviewImageFragment) PreviewMediaFragment(com.owncloud.android.ui.preview.PreviewMediaFragment) FileDetailFragment(com.owncloud.android.ui.fragment.FileDetailFragment) PreviewPdfFragment(com.owncloud.android.ui.preview.pdf.PreviewPdfFragment)

Example 62 with User

use of com.nextcloud.client.account.User in project android by nextcloud.

the class FileDisplayActivity method requestForDownload.

private void requestForDownload(OCFile file, String downloadBehaviour, String packageName, String activityName) {
    final User currentUser = getUser().orElseThrow(RuntimeException::new);
    if (!mDownloaderBinder.isDownloading(currentUser, mWaitingToPreview)) {
        Intent i = new Intent(this, FileDownloader.class);
        i.putExtra(FileDownloader.EXTRA_USER, currentUser);
        i.putExtra(FileDownloader.EXTRA_FILE, file);
        i.putExtra(SendShareDialog.PACKAGE_NAME, packageName);
        i.putExtra(SendShareDialog.ACTIVITY_NAME, activityName);
        i.putExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR, downloadBehaviour);
        startService(i);
    }
}
Also used : User(com.nextcloud.client.account.User) Intent(android.content.Intent)

Example 63 with User

use of com.nextcloud.client.account.User in project android by nextcloud.

the class FileDetailFragment method prepareOptionsMenu.

private void prepareOptionsMenu(Menu menu) {
    if (containerActivity.getStorageManager() != null) {
        User currentUser = accountManager.getUser();
        FileMenuFilter mf = new FileMenuFilter(getFile(), containerActivity, getActivity(), false, currentUser);
        mf.filter(menu, true);
    }
    if (getFile().isFolder()) {
        FileMenuFilter.hideMenuItems(menu.findItem(R.id.action_send_file));
        FileMenuFilter.hideMenuItems(menu.findItem(R.id.action_sync_file));
    }
}
Also used : User(com.nextcloud.client.account.User) FileMenuFilter(com.owncloud.android.files.FileMenuFilter)

Example 64 with User

use of com.nextcloud.client.account.User in project android by nextcloud.

the class FileDetailActivitiesFragment method fetchAndSetData.

/**
 * @param lastGiven int; -1 to disable
 */
private void fetchAndSetData(int lastGiven) {
    final FragmentActivity activity = getActivity();
    if (activity == null) {
        Log_OC.e(this, "Activity is null, aborting!");
        return;
    }
    final User user = accountManager.getUser();
    if (user.isAnonymous()) {
        activity.runOnUiThread(() -> {
            setEmptyContent(getString(R.string.common_error), getString(R.string.file_detail_activity_error));
        });
        return;
    }
    Thread t = new Thread(() -> {
        try {
            ownCloudClient = clientFactory.create(user);
            nextcloudClient = clientFactory.createNextcloudClient(user);
            isLoadingActivities = true;
            GetActivitiesRemoteOperation getRemoteNotificationOperation;
            if (lastGiven > 0) {
                getRemoteNotificationOperation = new GetActivitiesRemoteOperation(file.getLocalId(), lastGiven);
            } else {
                getRemoteNotificationOperation = new GetActivitiesRemoteOperation(file.getLocalId());
            }
            Log_OC.d(TAG, "BEFORE getRemoteActivitiesOperation.execute");
            RemoteOperationResult result = nextcloudClient.execute(getRemoteNotificationOperation);
            ArrayList<Object> versions = null;
            if (restoreFileVersionSupported) {
                ReadFileVersionsRemoteOperation readFileVersionsOperation = new ReadFileVersionsRemoteOperation(file.getLocalId());
                RemoteOperationResult result1 = readFileVersionsOperation.execute(ownCloudClient);
                if (result1.isSuccess()) {
                    versions = result1.getData();
                }
            }
            if (result.isSuccess() && result.getData() != null) {
                final List<Object> data = result.getData();
                final List<Object> activitiesAndVersions = (ArrayList) data.get(0);
                this.lastGiven = (int) data.get(1);
                if (activitiesAndVersions.isEmpty()) {
                    this.lastGiven = END_REACHED;
                }
                if (restoreFileVersionSupported && versions != null) {
                    activitiesAndVersions.addAll(versions);
                }
                activity.runOnUiThread(() -> {
                    if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
                        populateList(activitiesAndVersions, lastGiven == -1);
                    }
                });
            } else {
                Log_OC.d(TAG, result.getLogMessage());
                // show error
                String logMessage = result.getLogMessage();
                if (result.getHttpCode() == HttpStatus.SC_NOT_MODIFIED) {
                    logMessage = getString(R.string.activities_no_results_message);
                }
                final String finalLogMessage = logMessage;
                activity.runOnUiThread(() -> {
                    if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
                        setErrorContent(finalLogMessage);
                        isLoadingActivities = false;
                    }
                });
            }
            hideRefreshLayoutLoader(activity);
        } catch (ClientFactory.CreationException e) {
            Log_OC.e(TAG, "Error fetching file details activities", e);
        }
    });
    t.start();
}
Also used : User(com.nextcloud.client.account.User) RemoteOperationResult(com.owncloud.android.lib.common.operations.RemoteOperationResult) ArrayList(java.util.ArrayList) ClientFactory(com.nextcloud.client.network.ClientFactory) GetActivitiesRemoteOperation(com.owncloud.android.lib.resources.activities.GetActivitiesRemoteOperation) FragmentActivity(androidx.fragment.app.FragmentActivity) ReadFileVersionsRemoteOperation(com.owncloud.android.lib.resources.files.ReadFileVersionsRemoteOperation) RichObject(com.owncloud.android.lib.resources.activities.model.RichObject)

Example 65 with User

use of com.nextcloud.client.account.User in project android by nextcloud.

the class UsersAndGroupsSearchProvider method searchForUsersOrGroups.

private Cursor searchForUsersOrGroups(Uri uri) {
    String lastPathSegment = uri.getLastPathSegment();
    if (lastPathSegment == null) {
        throw new IllegalArgumentException("Wrong URI passed!");
    }
    // need to trust on the AccountUtils to get the current account since the query in the client side is not
    // directly started by our code, but from SearchView implementation
    User user = accountManager.getUser();
    String userQuery = lastPathSegment.toLowerCase(Locale.ROOT);
    // request to the OC server about users and groups matching userQuery
    GetShareesRemoteOperation searchRequest = new GetShareesRemoteOperation(userQuery, REQUESTED_PAGE, RESULTS_PER_PAGE);
    RemoteOperationResult result = searchRequest.execute(user.toPlatformAccount(), getContext());
    List<JSONObject> names = new ArrayList<>();
    if (result.isSuccess()) {
        for (Object o : result.getData()) {
            names.add((JSONObject) o);
        }
    } else {
        showErrorMessage(result);
    }
    MatrixCursor response = null;
    // convert the responses from the OC server to the expected format
    if (names.size() > 0) {
        if (getContext() == null) {
            throw new IllegalArgumentException("Context may not be null!");
        }
        response = new MatrixCursor(COLUMNS);
        Uri userBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_USER).build();
        Uri groupBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_GROUP).build();
        Uri roomBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_ROOM).build();
        Uri remoteBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_REMOTE).build();
        Uri emailBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_EMAIL).build();
        Uri circleBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_CIRCLE).build();
        FileDataStorageManager manager = new FileDataStorageManager(user, getContext().getContentResolver());
        boolean federatedShareAllowed = manager.getCapability(user.getAccountName()).getFilesSharingFederationOutgoing().isTrue();
        try {
            Iterator<JSONObject> namesIt = names.iterator();
            JSONObject item;
            String displayName;
            String subline = null;
            Object icon = 0;
            Uri dataUri;
            int count = 0;
            while (namesIt.hasNext()) {
                item = namesIt.next();
                dataUri = null;
                displayName = null;
                String userName = item.getString(GetShareesRemoteOperation.PROPERTY_LABEL);
                String name = item.isNull("name") ? "" : item.getString("name");
                JSONObject value = item.getJSONObject(GetShareesRemoteOperation.NODE_VALUE);
                ShareType type = ShareType.fromValue(value.getInt(GetShareesRemoteOperation.PROPERTY_SHARE_TYPE));
                String shareWith = value.getString(GetShareesRemoteOperation.PROPERTY_SHARE_WITH);
                Status status;
                JSONObject statusObject = item.optJSONObject(PROPERTY_STATUS);
                if (statusObject != null) {
                    status = new Status(StatusType.valueOf(statusObject.getString(PROPERTY_STATUS).toUpperCase(Locale.US)), statusObject.isNull(PROPERTY_MESSAGE) ? "" : statusObject.getString(PROPERTY_MESSAGE), statusObject.isNull(PROPERTY_ICON) ? "" : statusObject.getString(PROPERTY_ICON), statusObject.isNull(PROPERTY_CLEAR_AT) ? -1 : statusObject.getLong(PROPERTY_CLEAR_AT));
                } else {
                    status = new Status(StatusType.OFFLINE, "", "", -1);
                }
                switch(type) {
                    case GROUP:
                        displayName = userName;
                        icon = R.drawable.ic_group;
                        dataUri = Uri.withAppendedPath(groupBaseUri, shareWith);
                        break;
                    case FEDERATED:
                        if (federatedShareAllowed) {
                            icon = R.drawable.ic_user;
                            dataUri = Uri.withAppendedPath(remoteBaseUri, shareWith);
                            if (userName.equals(shareWith)) {
                                displayName = name;
                                subline = getContext().getString(R.string.remote);
                            } else {
                                String[] uriSplitted = shareWith.split("@");
                                displayName = name;
                                subline = getContext().getString(R.string.share_known_remote_on_clarification, uriSplitted[uriSplitted.length - 1]);
                            }
                        }
                        break;
                    case USER:
                        displayName = userName;
                        subline = (status.getMessage() == null || status.getMessage().isEmpty()) ? null : status.getMessage();
                        Uri.Builder builder = Uri.parse("content://com.nextcloud.android.providers.UsersAndGroupsSearchProvider/icon").buildUpon();
                        builder.appendQueryParameter("shareWith", shareWith);
                        builder.appendQueryParameter("displayName", displayName);
                        builder.appendQueryParameter("status", status.getStatus().toString());
                        if (!TextUtils.isEmpty(status.getIcon()) && !"null".equals(status.getIcon())) {
                            builder.appendQueryParameter("icon", status.getIcon());
                        }
                        icon = builder.build();
                        dataUri = Uri.withAppendedPath(userBaseUri, shareWith);
                        break;
                    case EMAIL:
                        icon = R.drawable.ic_email;
                        displayName = name;
                        subline = shareWith;
                        dataUri = Uri.withAppendedPath(emailBaseUri, shareWith);
                        break;
                    case ROOM:
                        icon = R.drawable.ic_talk;
                        displayName = userName;
                        dataUri = Uri.withAppendedPath(roomBaseUri, shareWith);
                        break;
                    case CIRCLE:
                        icon = R.drawable.ic_circles;
                        displayName = userName;
                        dataUri = Uri.withAppendedPath(circleBaseUri, shareWith);
                        break;
                    default:
                        break;
                }
                if (displayName != null && dataUri != null) {
                    response.newRow().add(// BaseColumns._ID
                    count++).add(// SearchManager.SUGGEST_COLUMN_TEXT_1
                    displayName).add(// SearchManager.SUGGEST_COLUMN_TEXT_2
                    subline).add(// SearchManager.SUGGEST_COLUMN_ICON_1
                    icon).add(dataUri);
                }
            }
        } catch (JSONException e) {
            Log_OC.e(TAG, "Exception while parsing data of users/groups", e);
        }
    }
    return response;
}
Also used : Status(com.owncloud.android.lib.resources.users.Status) User(com.nextcloud.client.account.User) RemoteOperationResult(com.owncloud.android.lib.common.operations.RemoteOperationResult) ArrayList(java.util.ArrayList) JSONException(org.json.JSONException) GetShareesRemoteOperation(com.owncloud.android.lib.resources.shares.GetShareesRemoteOperation) Uri(android.net.Uri) MatrixCursor(android.database.MatrixCursor) JSONObject(org.json.JSONObject) FileDataStorageManager(com.owncloud.android.datamodel.FileDataStorageManager) JSONObject(org.json.JSONObject) ShareType(com.owncloud.android.lib.resources.shares.ShareType)

Aggregations

User (com.nextcloud.client.account.User)84 OCFile (com.owncloud.android.datamodel.OCFile)21 FileDataStorageManager (com.owncloud.android.datamodel.FileDataStorageManager)19 RemoteOperationResult (com.owncloud.android.lib.common.operations.RemoteOperationResult)19 Intent (android.content.Intent)14 Account (android.accounts.Account)12 ArrayList (java.util.ArrayList)12 Context (android.content.Context)9 Fragment (androidx.fragment.app.Fragment)9 OwnCloudAccount (com.owncloud.android.lib.common.OwnCloudAccount)9 File (java.io.File)9 ArbitraryDataProvider (com.owncloud.android.datamodel.ArbitraryDataProvider)7 Uri (android.net.Uri)6 Bundle (android.os.Bundle)6 OCCapability (com.owncloud.android.lib.resources.status.OCCapability)6 GalleryFragment (com.owncloud.android.ui.fragment.GalleryFragment)6 PreviewTextFileFragment (com.owncloud.android.ui.preview.PreviewTextFileFragment)6 PreviewTextFragment (com.owncloud.android.ui.preview.PreviewTextFragment)6 PreviewTextStringFragment (com.owncloud.android.ui.preview.PreviewTextStringFragment)6 View (android.view.View)5