Search in sources :

Example 1 with License

use of com.odysee.app.model.License in project odysee-android by OdyseeTeam.

the class PublishFormFragment method initUi.

private void initUi() {
    Context context = getContext();
    languageSpinner.setAdapter(new LanguageSpinnerAdapter(context, R.layout.spinner_item_generic));
    licenseSpinner.setAdapter(new LicenseSpinnerAdapter(context, R.layout.spinner_item_generic));
    licenseSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
            License license = (License) adapterView.getAdapter().getItem(position);
            boolean otherLicense = Arrays.asList(Predefined.LICENSE_COPYRIGHTED.toLowerCase(), Predefined.LICENSE_OTHER.toLowerCase()).contains(license.getName().toLowerCase());
            Helper.setViewVisibility(layoutOtherLicenseDescription, otherLicense ? View.VISIBLE : View.GONE);
            if (!otherLicense) {
                inputOtherLicenseDescription.setText(null);
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
    linkGenerateAddress.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (!editMode) {
                inputAddress.setText(Helper.generateUrl());
            }
        }
    });
    switchPrice.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
            Helper.setViewVisibility(textNoPrice, checked ? View.GONE : View.VISIBLE);
            Helper.setViewVisibility(layoutPrice, checked ? View.VISIBLE : View.GONE);
        }
    });
    inputAddress.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            String value = Helper.getValue(charSequence);
            boolean invalid = !Helper.isNullOrEmpty(value) && !LbryUri.isNameValid(value);
            Helper.setViewVisibility(textInlineAddressInvalid, invalid ? View.VISIBLE : View.INVISIBLE);
        }

        @Override
        public void afterTextChanged(Editable editable) {
        }
    });
    inputDeposit.setOnFocusChangeListener(new View.OnFocusChangeListener() {

        @Override
        public void onFocusChange(View view, boolean hasFocus) {
            Helper.setViewVisibility(inlineDepositBalanceContainer, hasFocus ? View.VISIBLE : View.GONE);
        }
    });
    linkShowExtraFields.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (layoutExtraFields.getVisibility() != View.VISIBLE) {
                layoutExtraFields.setVisibility(View.VISIBLE);
                linkShowExtraFields.setText(R.string.hide_extra_fields);
                scrollView.post(new Runnable() {

                    @Override
                    public void run() {
                        scrollView.fullScroll(NestedScrollView.FOCUS_DOWN);
                    }
                });
            } else {
                layoutExtraFields.setVisibility(View.GONE);
                linkShowExtraFields.setText(R.string.show_extra_fields);
            }
        }
    });
    mediaContainer.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            checkStoragePermissionAndLaunchFilePicker();
        }
    });
    channelSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
            Object item = adapterView.getItemAtPosition(position);
            if (item instanceof Claim) {
                Claim claim = (Claim) item;
                if (claim.isPlaceholder() && !claim.isPlaceholderAnonymous()) {
                    if (!fetchingChannels) {
                        showChannelCreator();
                    }
                }
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
    inputTagFilter.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            String value = Helper.getValue(charSequence);
            setFilter(value);
        }

        @Override
        public void afterTextChanged(Editable editable) {
        }
    });
    linkPublishCancel.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (transcodeInProgress) {
                // show alert confirming the user is sure, and then cancel
                FFmpeg.cancel();
                transcodeInProgress = false;
            }
            Context context = getContext();
            if (context instanceof MainActivity) {
                ((MainActivity) context).onBackPressed();
            }
        }
    });
    buttonPublish.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (uploading) {
                Snackbar.make(view, R.string.publish_thumbnail_in_progress, Snackbar.LENGTH_LONG).show();
                return;
            } else if (Helper.isNullOrEmpty(uploadedThumbnailUrl)) {
                showError(getString(R.string.publish_no_thumbnail));
                return;
            }
            if (transcodeInProgress) {
                Snackbar.make(view, R.string.optimization_in_progress, Snackbar.LENGTH_LONG).show();
                return;
            }
            // check minimum deposit
            String depositString = Helper.getValue(inputDeposit.getText());
            double depositAmount = 0;
            try {
                depositAmount = Double.valueOf(depositString);
            } catch (NumberFormatException ex) {
                // pass
                showError(getString(R.string.please_enter_valid_deposit));
                return;
            }
            if (depositAmount < Helper.MIN_DEPOSIT) {
                String error = getResources().getQuantityString(R.plurals.min_deposit_required, depositAmount == 1 ? 1 : 2, String.valueOf(Helper.MIN_DEPOSIT));
                showError(error);
                return;
            }
            if (Lbry.getAvailableBalance() < depositAmount) {
                showError(getString(R.string.deposit_more_than_balance));
                return;
            }
            String priceString = Helper.getValue(inputPrice.getText());
            double priceAmount = Helper.parseDouble(priceString, 0);
            if (switchPrice.isChecked() && priceAmount == 0) {
                showError(getString(R.string.price_amount_not_set));
                return;
            }
            Claim claim = buildPublishClaim();
            if (validatePublishClaim(claim)) {
                publishClaim(claim);
            }
        }
    });
    channelSpinnerAdapter = new InlineChannelSpinnerAdapter(getContext(), R.layout.spinner_item_channel, new ArrayList<>());
    channelSpinnerAdapter.addPlaceholder(false);
}
Also used : License(com.odysee.app.model.License) MainActivity(com.odysee.app.MainActivity) LicenseSpinnerAdapter(com.odysee.app.adapter.LicenseSpinnerAdapter) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) Context(android.content.Context) InlineChannelSpinnerAdapter(com.odysee.app.adapter.InlineChannelSpinnerAdapter) NestedScrollView(androidx.core.widget.NestedScrollView) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) RecyclerView(androidx.recyclerview.widget.RecyclerView) CardView(androidx.cardview.widget.CardView) TextView(android.widget.TextView) LanguageSpinnerAdapter(com.odysee.app.adapter.LanguageSpinnerAdapter) AdapterView(android.widget.AdapterView) JSONObject(org.json.JSONObject) CompoundButton(android.widget.CompoundButton) Claim(com.odysee.app.model.Claim)

Example 2 with License

use of com.odysee.app.model.License in project odysee-android by OdyseeTeam.

the class PublishFormFragment method updateFieldsFromCurrentClaim.

private void updateFieldsFromCurrentClaim() {
    if (currentClaim != null && !editFieldsLoaded) {
        Context context = getContext();
        try {
            Claim.StreamMetadata metadata = (Claim.StreamMetadata) currentClaim.getValue();
            if (context != null) {
                uploadedThumbnailUrl = currentClaim.getThumbnailUrl(imageThumbnail.getLayoutParams().width, imageThumbnail.getLayoutParams().height, 85);
            }
            if (context != null && !Helper.isNullOrEmpty(uploadedThumbnailUrl)) {
                Glide.with(context.getApplicationContext()).load(uploadedThumbnailUrl).centerCrop().into(imageThumbnail);
            }
            inputTitle.setText(currentClaim.getTitle());
            inputDescription.setText(currentClaim.getDescription());
            if (addedTagsAdapter != null && currentClaim.getTagObjects() != null) {
                addedTagsAdapter.addTags(currentClaim.getTagObjects());
                updateSuggestedTags(currentFilter, SUGGESTED_LIMIT, true);
            }
            if (metadata.getFee() != null) {
                Fee fee = metadata.getFee();
                switchPrice.setChecked(true);
                inputPrice.setText(fee.getAmount());
                priceCurrencySpinner.setSelection("lbc".equalsIgnoreCase(fee.getCurrency()) ? 0 : 1);
            }
            inputAddress.setText(currentClaim.getName());
            inputDeposit.setText(currentClaim.getAmount());
            if (metadata.getLanguages() != null && metadata.getLanguages().size() > 0) {
                // get the first language
                String langCode = metadata.getLanguages().get(0);
                int langCodePosition = ((LanguageSpinnerAdapter) languageSpinner.getAdapter()).getItemPosition(langCode);
                if (langCodePosition > -1) {
                    languageSpinner.setSelection(langCodePosition);
                }
            }
            if (!Helper.isNullOrEmpty(metadata.getLicense())) {
                LicenseSpinnerAdapter adapter = (LicenseSpinnerAdapter) licenseSpinner.getAdapter();
                int licPosition = adapter.getItemPosition(metadata.getLicense());
                if (licPosition == -1) {
                    licPosition = adapter.getItemPosition(Predefined.LICENSE_OTHER);
                }
                if (licPosition > -1) {
                    licenseSpinner.setSelection(licPosition);
                }
                License selectedLicense = (License) licenseSpinner.getSelectedItem();
                boolean otherLicense = Arrays.asList(Predefined.LICENSE_COPYRIGHTED.toLowerCase(), Predefined.LICENSE_OTHER.toLowerCase()).contains(selectedLicense.getName().toLowerCase());
                inputOtherLicenseDescription.setText(otherLicense ? metadata.getLicense() : null);
            }
            inputAddress.setEnabled(false);
            editMode = true;
            editFieldsLoaded = true;
        } catch (ClassCastException ex) {
            // invalid claim value type
            cancelOnFatalCondition(getString(R.string.publish_invalid_claim_type));
        }
    }
}
Also used : Context(android.content.Context) LicenseSpinnerAdapter(com.odysee.app.adapter.LicenseSpinnerAdapter) Fee(com.odysee.app.model.Fee) License(com.odysee.app.model.License) Claim(com.odysee.app.model.Claim) LanguageSpinnerAdapter(com.odysee.app.adapter.LanguageSpinnerAdapter)

Example 3 with License

use of com.odysee.app.model.License in project odysee-android by OdyseeTeam.

the class LicenseSpinnerAdapter method createView.

private View createView(int position, View convertView, ViewGroup parent) {
    License item = getItem(position);
    View view = inflater.inflate(layoutResourceId, parent, false);
    TextView label = view.findViewById(R.id.item_display_name);
    label.setText(item != null ? item.getStringResourceId() : 0);
    return view;
}
Also used : License(com.odysee.app.model.License) TextView(android.widget.TextView) TextView(android.widget.TextView) View(android.view.View)

Example 4 with License

use of com.odysee.app.model.License in project odysee-android by OdyseeTeam.

the class PublishFormFragment method buildPublishClaim.

private Claim buildPublishClaim() {
    Claim claim = new Claim();
    claim.setName(Helper.getValue(inputAddress.getText()));
    claim.setAmount(Helper.getValue(inputDeposit.getText()));
    Claim.StreamMetadata metadata = new Claim.StreamMetadata();
    metadata.setTitle(Helper.getValue(inputTitle.getText()));
    metadata.setDescription(Helper.getValue(inputDescription.getText()));
    metadata.setTags(Helper.getTagsForTagObjects(addedTagsAdapter.getTags()));
    Claim selectedChannel = (Claim) channelSpinner.getSelectedItem();
    if (selectedChannel != null && !selectedChannel.isPlaceholder() && !selectedChannel.isPlaceholderAnonymous()) {
        claim.setSigningChannel(selectedChannel);
    }
    if (switchPrice.isChecked()) {
        Fee fee = new Fee();
        fee.setCurrency((String) priceCurrencySpinner.getSelectedItem());
        fee.setAmount(Helper.getValue(inputPrice.getText()));
        metadata.setFee(fee);
    }
    if (!Helper.isNullOrEmpty(uploadedThumbnailUrl)) {
        Claim.Resource thumbnail = new Claim.Resource();
        thumbnail.setUrl(uploadedThumbnailUrl);
        metadata.setThumbnail(thumbnail);
    }
    Language selectedLanguage = (Language) languageSpinner.getSelectedItem();
    if (selectedLanguage != null) {
        metadata.setLanguages(Arrays.asList(selectedLanguage.getCode()));
    }
    License selectedLicense = (License) licenseSpinner.getSelectedItem();
    if (selectedLicense != null) {
        boolean otherLicense = Arrays.asList(Predefined.LICENSE_COPYRIGHTED.toLowerCase(), Predefined.LICENSE_OTHER.toLowerCase()).contains(selectedLicense.getName().toLowerCase());
        metadata.setLicense(otherLicense ? Helper.getValue(inputOtherLicenseDescription.getText()) : selectedLicense.getName());
        metadata.setLicenseUrl(selectedLicense.getUrl());
    }
    // set release time from current claim (on edit)
    if (currentClaim != null) {
        Claim.StreamMetadata currentMetadata = (Claim.StreamMetadata) currentClaim.getValue();
        metadata.setReleaseTime(currentMetadata.getReleaseTime());
        if (metadata.getReleaseTime() == 0) {
            metadata.setReleaseTime(currentClaim.getTimestamp());
        }
        claim.setTimestamp(currentClaim.getTimestamp());
    }
    claim.setValueType(Claim.TYPE_STREAM);
    claim.setValue(metadata);
    return claim;
}
Also used : Language(com.odysee.app.model.Language) Fee(com.odysee.app.model.Fee) License(com.odysee.app.model.License) Claim(com.odysee.app.model.Claim)

Aggregations

License (com.odysee.app.model.License)4 Claim (com.odysee.app.model.Claim)3 Context (android.content.Context)2 View (android.view.View)2 TextView (android.widget.TextView)2 LanguageSpinnerAdapter (com.odysee.app.adapter.LanguageSpinnerAdapter)2 LicenseSpinnerAdapter (com.odysee.app.adapter.LicenseSpinnerAdapter)2 Fee (com.odysee.app.model.Fee)2 Editable (android.text.Editable)1 TextWatcher (android.text.TextWatcher)1 AdapterView (android.widget.AdapterView)1 CompoundButton (android.widget.CompoundButton)1 ImageView (android.widget.ImageView)1 CardView (androidx.cardview.widget.CardView)1 NestedScrollView (androidx.core.widget.NestedScrollView)1 RecyclerView (androidx.recyclerview.widget.RecyclerView)1 MainActivity (com.odysee.app.MainActivity)1 InlineChannelSpinnerAdapter (com.odysee.app.adapter.InlineChannelSpinnerAdapter)1 Language (com.odysee.app.model.Language)1 JSONObject (org.json.JSONObject)1