Search in sources :

Example 1 with LicenseSpinnerAdapter

use of com.odysee.app.adapter.LicenseSpinnerAdapter 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 LicenseSpinnerAdapter

use of com.odysee.app.adapter.LicenseSpinnerAdapter 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)

Aggregations

Context (android.content.Context)2 LanguageSpinnerAdapter (com.odysee.app.adapter.LanguageSpinnerAdapter)2 LicenseSpinnerAdapter (com.odysee.app.adapter.LicenseSpinnerAdapter)2 Claim (com.odysee.app.model.Claim)2 License (com.odysee.app.model.License)2 Editable (android.text.Editable)1 TextWatcher (android.text.TextWatcher)1 View (android.view.View)1 AdapterView (android.widget.AdapterView)1 CompoundButton (android.widget.CompoundButton)1 ImageView (android.widget.ImageView)1 TextView (android.widget.TextView)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 Fee (com.odysee.app.model.Fee)1 JSONObject (org.json.JSONObject)1