diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-07-20 16:26:38 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-07-20 16:26:38 +0300 |
commit | 2919455778f058da9163a617e2193d78dab4a34e (patch) | |
tree | 9064c662b2d9019d206f9da382d034a1704132be /app | |
parent | 36c6742baca3084a70af94e5682451c985aabcfc (diff) | |
parent | d91126b47a87e3ece1499a2c366fb31ac1122acd (diff) |
Merge branch 'master' into stack-widget
# Conflicts:
# app/src/main/res/values/strings.xml
Diffstat (limited to 'app')
47 files changed, 340 insertions, 140 deletions
diff --git a/app/build.gradle b/app/build.gradle index 7a0eca9c7..ffe0981a4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "it.niedermann.nextcloud.deck" minSdkVersion 17 targetSdkVersion 29 - versionCode 1008001 - versionName "1.8.1" + versionCode 1008003 + versionName "1.8.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true javaCompileOptions { diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java index d761f2d51..100cb98d1 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java @@ -768,6 +768,7 @@ public class SyncManager { return liveData; } + @Deprecated @AnyThread public WrappedLiveData<FullStack> updateStack(@NonNull FullStack stack) { WrappedLiveData<FullStack> liveData = new WrappedLiveData<>(); @@ -777,7 +778,16 @@ public class SyncManager { updateStack(account, board, stack, liveData); }); return liveData; + } + @AnyThread + public WrappedLiveData<Void> updateStackTitle(long accountId, long localStackId, @NonNull String newTitle) { + WrappedLiveData<Void> liveData = new WrappedLiveData<>(); + doAsync(() -> { + // TODO implement, replaces #updateStack(@NonNull FullStack stack) + liveData.postError(new UnsupportedOperationException("Not yet implemented.")); + }); + return liveData; } @AnyThread @@ -1436,6 +1446,7 @@ public class SyncManager { public LiveData<List<Label>> findProposalsForLabelsToAssign(final long accountId, final long boardId, long notAssignedToLocalCardId) { return dataBaseAdapter.findProposalsForLabelsToAssign(accountId, boardId, notAssignedToLocalCardId); } + public LiveData<List<Label>> findProposalsForLabelsToAssign(final long accountId, final long boardId) { return findProposalsForLabelsToAssign(accountId, boardId, -1L); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/PushNotificationActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/PushNotificationActivity.java index b0b0d68ae..b0438c40b 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/PushNotificationActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/PushNotificationActivity.java @@ -5,6 +5,7 @@ import android.net.Uri; import android.text.TextUtils; import android.view.View; +import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.UiThread; import androidx.appcompat.app.AppCompatActivity; @@ -18,6 +19,7 @@ import it.niedermann.nextcloud.deck.model.Account; import it.niedermann.nextcloud.deck.persistence.sync.SyncManager; import it.niedermann.nextcloud.deck.ui.card.EditActivity; import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler; +import it.niedermann.nextcloud.deck.util.ColorUtil; import static android.graphics.Color.parseColor; import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce; @@ -146,10 +148,13 @@ public class PushNotificationActivity extends AppCompatActivity { return true; } + // TODO implement Branded interface + // TODO apply branding based on board color public void applyBrandToSubmitButton(@NonNull Account account) { + @ColorInt final int mainColor = parseColor(account.getColor()); try { - binding.submit.setBackgroundColor(parseColor(account.getColor())); - binding.submit.setTextColor(parseColor(account.getTextColor())); + binding.submit.setBackgroundColor(mainColor); + binding.submit.setTextColor(ColorUtil.getForegroundColorForBackgroundColor(mainColor)); } catch (Throwable t) { DeckLog.logError(t); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentAdapter.java index 0794323ec..b17b34137 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentAdapter.java @@ -52,7 +52,7 @@ public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHolder @Override public void onBindViewHolder(@NonNull AttachmentViewHolder holder, int position) { final Attachment attachment = attachments.get(position); - final String uri = AttachmentUtil.getRemoteUrl(account.getUrl(), cardRemoteId, attachment.getId()); + final String uri = AttachmentUtil.getRemoteOrLocalUrl(account.getUrl(), cardRemoteId, attachment); if (MimeTypeUtil.isImage(attachment.getMimetype())) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { holder.binding.preview.setTransitionName(context.getString(R.string.transition_attachment_preview, String.valueOf(attachment.getLocalId()))); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentsActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentsActivity.java index 98cfd4440..3b1c534ba 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentsActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentsActivity.java @@ -2,6 +2,7 @@ package it.niedermann.nextcloud.deck.ui.attachments; import android.content.Context; import android.content.Intent; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; @@ -9,6 +10,8 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.SharedElementCallback; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.drawable.DrawableCompat; import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager2.widget.ViewPager2; @@ -44,6 +47,9 @@ public class AttachmentsActivity extends AppCompatActivity { supportPostponeEnterTransition(); setSupportActionBar(binding.toolbar); + final Drawable navigationIcon = getResources().getDrawable(R.drawable.ic_arrow_back_white_24dp); + DrawableCompat.setTint(navigationIcon, ContextCompat.getColor(this, android.R.color.white)); + binding.toolbar.setNavigationIcon(navigationIcon); final Bundle args = getIntent().getExtras(); if (args == null || !args.containsKey(BUNDLE_KEY_ACCOUNT) || !args.containsKey(BUNDLE_KEY_CARD_ID)) { @@ -67,7 +73,7 @@ public class AttachmentsActivity extends AppCompatActivity { } } if (fullCard.getAttachments().size() == 0) { - DeckLog.logError(new IllegalStateException(AttachmentsActivity.class.getSimpleName() + " called, but card " + fullCard.getLocalId() + "has no attachments")); + DeckLog.logError(new IllegalStateException(AttachmentsActivity.class.getSimpleName() + " called, but card " + fullCard.getCard().getTitle() + " has no attachments")); supportFinishAfterTransition(); return; } @@ -79,7 +85,7 @@ public class AttachmentsActivity extends AppCompatActivity { binding.toolbar.setTitle(attachments.get(position).getBasename()); } }; - RecyclerView.Adapter adapter = new AttachmentAdapter(account, fullCard.getId(), attachments); + RecyclerView.Adapter<AttachmentViewHolder> adapter = new AttachmentAdapter(account, fullCard.getId(), attachments); binding.viewPager.setAdapter(adapter); binding.viewPager.registerOnPageChangeCallback(onPageChangeCallback); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/DefaultCardViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/DefaultCardViewHolder.java index 5e82061d1..a362fd3b7 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/DefaultCardViewHolder.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/DefaultCardViewHolder.java @@ -1,6 +1,7 @@ package it.niedermann.nextcloud.deck.ui.card; import android.content.Context; +import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; @@ -21,7 +22,7 @@ import java.util.List; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.databinding.ItemCardDefaultBinding; import it.niedermann.nextcloud.deck.model.Account; -import it.niedermann.nextcloud.deck.model.Card; +import it.niedermann.nextcloud.deck.model.Card.TaskStatus; import it.niedermann.nextcloud.deck.model.Label; import it.niedermann.nextcloud.deck.model.User; import it.niedermann.nextcloud.deck.model.full.FullCard; @@ -51,7 +52,6 @@ public class DefaultCardViewHolder extends AbstractCardViewHolder { } final int attachmentsCount = fullCard.getAttachments().size(); - if (attachmentsCount == 0) { binding.cardCountAttachments.setVisibility(View.GONE); } else { @@ -60,7 +60,6 @@ public class DefaultCardViewHolder extends AbstractCardViewHolder { } final int commentsCount = fullCard.getCommentCount(); - if (commentsCount == 0) { binding.cardCountComments.setVisibility(View.GONE); } else { @@ -69,7 +68,7 @@ public class DefaultCardViewHolder extends AbstractCardViewHolder { binding.cardCountComments.setVisibility(View.VISIBLE); } - List<Label> labels = fullCard.getLabels(); + final List<Label> labels = fullCard.getLabels(); if (labels != null && labels.size() > 0) { binding.labels.updateLabels(labels); binding.labels.setVisibility(View.VISIBLE); @@ -78,12 +77,20 @@ public class DefaultCardViewHolder extends AbstractCardViewHolder { binding.labels.setVisibility(View.GONE); } - Card.TaskStatus taskStatus = fullCard.getCard().getTaskStatus(); + final TaskStatus taskStatus = fullCard.getCard().getTaskStatus(); if (taskStatus.taskCount > 0) { binding.cardCountTasks.setText(context.getResources().getString(R.string.task_count, String.valueOf(taskStatus.doneCount), String.valueOf(taskStatus.taskCount))); + binding.cardCountTasks.setCompoundDrawablesWithIntrinsicBounds(context.getResources().getDrawable(R.drawable.ic_check_grey600_24dp), null, null, null); binding.cardCountTasks.setVisibility(View.VISIBLE); } else { - binding.cardCountTasks.setVisibility(View.GONE); + final String description = fullCard.getCard().getDescription(); + if (!TextUtils.isEmpty(description)) { + binding.cardCountTasks.setCompoundDrawablesWithIntrinsicBounds(context.getResources().getDrawable(R.drawable.ic_baseline_subject_24), null, null, null); + binding.cardCountTasks.setText(null); + binding.cardCountTasks.setVisibility(View.VISIBLE); + } else { + binding.cardCountTasks.setVisibility(View.GONE); + } } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java index ed3031b7c..3b4a913ed 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java @@ -1,18 +1,60 @@ package it.niedermann.nextcloud.deck.ui.card.attachments; +import android.view.MenuInflater; import android.view.View; import android.widget.ImageView; +import androidx.annotation.CallSuper; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.RecyclerView; +import it.niedermann.nextcloud.deck.R; +import it.niedermann.nextcloud.deck.model.Account; +import it.niedermann.nextcloud.deck.model.Attachment; +import it.niedermann.nextcloud.deck.model.enums.DBStatus; +import it.niedermann.nextcloud.deck.ui.branding.BrandingUtil; +import it.niedermann.nextcloud.deck.util.AttachmentUtil; + +import static it.niedermann.nextcloud.deck.util.ClipboardUtil.copyToClipboard; + public abstract class AttachmentViewHolder extends RecyclerView.ViewHolder { AttachmentViewHolder(@NonNull View itemView) { super(itemView); } + public void bind(@NonNull Account account, @NonNull MenuInflater menuInflater, @NonNull FragmentManager fragmentManager, Long cardRemoteId, Attachment attachment, @Nullable View.OnClickListener onClickListener, @ColorInt int mainColor) { + bind(menuInflater, fragmentManager, cardRemoteId, attachment, onClickListener, mainColor, AttachmentUtil.getRemoteOrLocalUrl(account.getUrl(), cardRemoteId, attachment)); + } + + @CallSuper + public void bind(@NonNull MenuInflater menuInflater, @NonNull FragmentManager fragmentManager, Long cardRemoteId, Attachment attachment, @Nullable View.OnClickListener onClickListener, @ColorInt int mainColor, @Nullable String attachmentUri) { + setNotSyncedYetStatus(!DBStatus.LOCAL_EDITED.equals(attachment.getStatusEnum()), mainColor); + itemView.setOnCreateContextMenuListener((menu, v, menuInfo) -> { + menuInflater.inflate(R.menu.attachment_menu, menu); + menu.findItem(R.id.delete).setOnMenuItemClickListener(item -> { + DeleteAttachmentDialogFragment.newInstance(attachment).show(fragmentManager, DeleteAttachmentDialogFragment.class.getCanonicalName()); + return false; + }); + if (attachmentUri == null || attachment.getId() == null || cardRemoteId == null) { + menu.findItem(android.R.id.copyUrl).setVisible(false); + } else { + menu.findItem(android.R.id.copyUrl).setVisible(true); + menu.findItem(android.R.id.copyUrl).setOnMenuItemClickListener(item -> copyToClipboard(itemView.getContext(), attachment.getFilename(), attachmentUri)); + } + }); + } + abstract protected ImageView getPreview(); - abstract protected void setNotSyncedYetStatus(boolean synced, @ColorInt int color); + protected void setNotSyncedYetStatus(boolean synced, @ColorInt int mainColor) { + final ImageView notSyncedYet = getNotSyncedYetStatusIcon(); + DrawableCompat.setTint(notSyncedYet.getDrawable(), BrandingUtil.getSecondaryForegroundColorDependingOnTheme(notSyncedYet.getContext(), mainColor)); + notSyncedYet.setVisibility(synced ? View.GONE : View.VISIBLE); + } + + abstract protected ImageView getNotSyncedYetStatusIcon(); }
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java index a72ed8ef2..ea347417a 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java @@ -3,9 +3,7 @@ package it.niedermann.nextcloud.deck.ui.card.attachments; import android.app.Activity; import android.content.Context; import android.content.Intent; -import android.net.Uri; import android.os.Build; -import android.text.format.Formatter; import android.view.LayoutInflater; import android.view.MenuInflater; import android.view.View; @@ -18,8 +16,6 @@ import androidx.core.app.ActivityOptionsCompat; import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.RecyclerView; -import com.bumptech.glide.Glide; - import java.util.ArrayList; import java.util.List; @@ -28,17 +24,15 @@ import it.niedermann.nextcloud.deck.databinding.ItemAttachmentDefaultBinding; import it.niedermann.nextcloud.deck.databinding.ItemAttachmentImageBinding; import it.niedermann.nextcloud.deck.model.Account; import it.niedermann.nextcloud.deck.model.Attachment; -import it.niedermann.nextcloud.deck.model.enums.DBStatus; import it.niedermann.nextcloud.deck.ui.attachments.AttachmentsActivity; -import it.niedermann.nextcloud.deck.util.AttachmentUtil; -import it.niedermann.nextcloud.deck.util.DateUtil; +import it.niedermann.nextcloud.deck.ui.branding.Branded; import it.niedermann.nextcloud.deck.util.MimeTypeUtil; import static androidx.recyclerview.widget.RecyclerView.NO_ID; -import static it.niedermann.nextcloud.deck.util.ClipboardUtil.copyToClipboard; +import static it.niedermann.nextcloud.deck.util.AttachmentUtil.openAttachmentInBrowser; @SuppressWarnings("WeakerAccess") -public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHolder> { +public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHolder> implements Branded { public static final int VIEW_TYPE_DEFAULT = 2; public static final int VIEW_TYPE_IMAGE = 1; @@ -54,14 +48,13 @@ public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHo FragmentManager fragmentManager; @NonNull private List<Attachment> attachments = new ArrayList<>(); - @Nullable + @NonNull private final AttachmentClickedListener attachmentClickedListener; CardAttachmentAdapter( - @NonNull Context context, @NonNull FragmentManager fragmentManager, @NonNull MenuInflater menuInflater, - @Nullable AttachmentClickedListener attachmentClickedListener, + @NonNull AttachmentClickedListener attachmentClickedListener, @NonNull Account account, @Nullable Long cardLocalId ) { @@ -95,39 +88,14 @@ public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHo @Override public void onBindViewHolder(@NonNull AttachmentViewHolder holder, int position) { - final Context context = holder.itemView.getContext(); final Attachment attachment = attachments.get(position); - final int viewType = getItemViewType(position); - - @Nullable final String uri = (attachment.getId() == null || cardRemoteId == null) - ? attachment.getLocalPath() : - AttachmentUtil.getRemoteUrl(account.getUrl(), cardRemoteId, attachment.getId()); - holder.setNotSyncedYetStatus(!DBStatus.LOCAL_EDITED.equals(attachment.getStatusEnum()), mainColor); - holder.itemView.setOnCreateContextMenuListener((menu, v, menuInfo) -> { - menuInflater.inflate(R.menu.attachment_menu, menu); - menu.findItem(R.id.delete).setOnMenuItemClickListener(item -> { - DeleteAttachmentDialogFragment.newInstance(attachment).show(fragmentManager, DeleteAttachmentDialogFragment.class.getCanonicalName()); - return false; - }); - if (uri == null) { - menu.findItem(android.R.id.copyUrl).setVisible(false); - } else { - menu.findItem(android.R.id.copyUrl).setOnMenuItemClickListener(item -> copyToClipboard(context, attachment.getFilename(), uri)); - } - }); + final Context context = holder.itemView.getContext(); + final View.OnClickListener onClickListener; - switch (viewType) { + switch (getItemViewType(position)) { case VIEW_TYPE_IMAGE: { - holder.getPreview().setImageResource(R.drawable.ic_image_grey600_24dp); - Glide.with(context) - .load(uri) - .placeholder(R.drawable.ic_image_grey600_24dp) - .error(R.drawable.ic_image_grey600_24dp) - .into(holder.getPreview()); - holder.itemView.setOnClickListener((v) -> { - if (attachmentClickedListener != null) { - attachmentClickedListener.onAttachmentClicked(position); - } + onClickListener = (event) -> { + attachmentClickedListener.onAttachmentClicked(position); final Intent intent = AttachmentsActivity.createIntent(context, account, cardLocalId, attachment.getLocalId()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && context instanceof Activity) { String transitionName = context.getString(R.string.transition_attachment_preview, String.valueOf(attachment.getLocalId())); @@ -136,46 +104,16 @@ public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHo } else { context.startActivity(intent); } - }); + }; break; } case VIEW_TYPE_DEFAULT: default: { - DefaultAttachmentViewHolder defaultHolder = (DefaultAttachmentViewHolder) holder; - - if (MimeTypeUtil.isAudio(attachment.getMimetype())) { - holder.getPreview().setImageResource(R.drawable.ic_music_note_grey600_24dp); - } else if (MimeTypeUtil.isVideo(attachment.getMimetype())) { - holder.getPreview().setImageResource(R.drawable.ic_local_movies_grey600_24dp); - } else if (MimeTypeUtil.isPdf(attachment.getMimetype())) { - holder.getPreview().setImageResource(R.drawable.ic_baseline_picture_as_pdf_24); - } else if (MimeTypeUtil.isContact(attachment.getMimetype())) { - holder.getPreview().setImageResource(R.drawable.ic_baseline_contact_mail_24); - } else { - holder.getPreview().setImageResource(R.drawable.ic_attach_file_grey600_24dp); - } - - if (cardRemoteId != null) { - defaultHolder.itemView.setOnClickListener((event) -> { - Intent openURL = new Intent(Intent.ACTION_VIEW); - openURL.setData(Uri.parse(AttachmentUtil.getRemoteUrl(account.getUrl(), cardRemoteId, attachment.getId()))); - context.startActivity(openURL); - }); - } - defaultHolder.binding.filename.setText(attachment.getBasename()); - defaultHolder.binding.filesize.setText(Formatter.formatFileSize(context, attachment.getFilesize())); - if (attachment.getLastModifiedLocal() != null) { - defaultHolder.binding.modified.setText(DateUtil.getRelativeDateTimeString(context, attachment.getLastModifiedLocal().getTime())); - defaultHolder.binding.modified.setVisibility(View.VISIBLE); - } else if (attachment.getLastModified() != null) { - defaultHolder.binding.modified.setText(DateUtil.getRelativeDateTimeString(context, attachment.getLastModified().getTime())); - defaultHolder.binding.modified.setVisibility(View.VISIBLE); - } else { - defaultHolder.binding.modified.setVisibility(View.GONE); - } + onClickListener = (event) -> openAttachmentInBrowser(context, account.getUrl(), cardRemoteId, attachment.getId()); break; } } + holder.bind(account, menuInflater, fragmentManager, cardRemoteId, attachment, onClickListener, mainColor); } @Override @@ -205,4 +143,10 @@ public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHo this.attachments.remove(a); notifyItemRemoved(index); } + + @Override + public void applyBrand(@ColorInt int mainColor) { + this.mainColor = mainColor; + notifyDataSetChanged(); + } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java index 23f6377a5..8cf948e6f 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java @@ -82,7 +82,6 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme syncManager = new SyncManager(requireContext()); adapter = new CardAttachmentAdapter( - requireContext(), getChildFragmentManager(), requireActivity().getMenuInflater(), this, @@ -163,6 +162,7 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + //noinspection SwitchStatementWithTooFewBranches switch (requestCode) { case REQUEST_CODE_ADD_FILE: { if (resultCode == RESULT_OK) { @@ -245,6 +245,7 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + //noinspection SwitchStatementWithTooFewBranches switch (requestCode) { case REQUEST_CODE_ADD_FILE_PERMISSION: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { @@ -289,6 +290,7 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme @Override public void applyBrand(int mainColor) { applyBrandToFAB(mainColor, binding.fab); + adapter.applyBrand(mainColor); } public static Fragment newInstance() { diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DefaultAttachmentViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DefaultAttachmentViewHolder.java index 7acdd390e..2890d2a81 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DefaultAttachmentViewHolder.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DefaultAttachmentViewHolder.java @@ -1,15 +1,25 @@ package it.niedermann.nextcloud.deck.ui.card.attachments; +import android.text.format.Formatter; +import android.view.MenuInflater; import android.view.View; import android.widget.ImageView; import androidx.annotation.ColorInt; -import androidx.core.graphics.drawable.DrawableCompat; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.FragmentManager; +import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.databinding.ItemAttachmentDefaultBinding; +import it.niedermann.nextcloud.deck.model.Account; +import it.niedermann.nextcloud.deck.model.Attachment; +import it.niedermann.nextcloud.deck.util.AttachmentUtil; +import it.niedermann.nextcloud.deck.util.DateUtil; +import it.niedermann.nextcloud.deck.util.MimeTypeUtil; public class DefaultAttachmentViewHolder extends AttachmentViewHolder { - ItemAttachmentDefaultBinding binding; + private ItemAttachmentDefaultBinding binding; @SuppressWarnings("WeakerAccess") public DefaultAttachmentViewHolder(ItemAttachmentDefaultBinding binding) { @@ -23,8 +33,36 @@ public class DefaultAttachmentViewHolder extends AttachmentViewHolder { } @Override - protected void setNotSyncedYetStatus(boolean synced, @ColorInt int mainColor) { - DrawableCompat.setTint(binding.notSyncedYet.getDrawable(), mainColor); - binding.notSyncedYet.setVisibility(synced ? View.GONE : View.VISIBLE); + protected ImageView getNotSyncedYetStatusIcon() { + return binding.notSyncedYet; + } + + public void bind(@NonNull Account account, @NonNull MenuInflater menuInflater, @NonNull FragmentManager fragmentManager, Long cardRemoteId, Attachment attachment, @Nullable View.OnClickListener onClickListener, @ColorInt int mainColor) { + super.bind(account, menuInflater, fragmentManager, cardRemoteId, attachment, onClickListener, mainColor); + + if (MimeTypeUtil.isAudio(attachment.getMimetype())) { + getPreview().setImageResource(R.drawable.ic_music_note_grey600_24dp); + } else if (MimeTypeUtil.isVideo(attachment.getMimetype())) { + getPreview().setImageResource(R.drawable.ic_local_movies_grey600_24dp); + } else if (MimeTypeUtil.isPdf(attachment.getMimetype())) { + getPreview().setImageResource(R.drawable.ic_baseline_picture_as_pdf_24); + } else if (MimeTypeUtil.isContact(attachment.getMimetype())) { + getPreview().setImageResource(R.drawable.ic_baseline_contact_mail_24); + } else { + getPreview().setImageResource(R.drawable.ic_attach_file_grey600_24dp); + } + + itemView.setOnClickListener((event) -> AttachmentUtil.openAttachmentInBrowser(itemView.getContext(), account.getUrl(), cardRemoteId, attachment.getId())); + binding.filename.setText(attachment.getBasename()); + binding.filesize.setText(Formatter.formatFileSize(binding.filesize.getContext(), attachment.getFilesize())); + if (attachment.getLastModifiedLocal() != null) { + binding.modified.setText(DateUtil.getRelativeDateTimeString(binding.modified.getContext(), attachment.getLastModifiedLocal().getTime())); + binding.modified.setVisibility(View.VISIBLE); + } else if (attachment.getLastModified() != null) { + binding.modified.setText(DateUtil.getRelativeDateTimeString(binding.modified.getContext(), attachment.getLastModified().getTime())); + binding.modified.setVisibility(View.VISIBLE); + } else { + binding.modified.setVisibility(View.GONE); + } } }
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/ImageAttachmentViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/ImageAttachmentViewHolder.java index d13675a30..e3139295f 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/ImageAttachmentViewHolder.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/ImageAttachmentViewHolder.java @@ -1,12 +1,21 @@ package it.niedermann.nextcloud.deck.ui.card.attachments; +import android.view.MenuInflater; import android.view.View; import android.widget.ImageView; import androidx.annotation.ColorInt; -import androidx.core.graphics.drawable.DrawableCompat; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.FragmentManager; +import com.bumptech.glide.Glide; + +import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.databinding.ItemAttachmentImageBinding; +import it.niedermann.nextcloud.deck.model.Account; +import it.niedermann.nextcloud.deck.model.Attachment; +import it.niedermann.nextcloud.deck.util.AttachmentUtil; public class ImageAttachmentViewHolder extends AttachmentViewHolder { private ItemAttachmentImageBinding binding; @@ -23,8 +32,21 @@ public class ImageAttachmentViewHolder extends AttachmentViewHolder { } @Override - protected void setNotSyncedYetStatus(boolean synced, @ColorInt int mainColor) { - DrawableCompat.setTint(binding.notSyncedYet.getDrawable(), mainColor); - binding.notSyncedYet.setVisibility(synced ? View.GONE : View.VISIBLE); + protected ImageView getNotSyncedYetStatusIcon() { + return binding.notSyncedYet; + } + + public void bind(@NonNull Account account, @NonNull MenuInflater menuInflater, @NonNull FragmentManager fragmentManager, Long cardRemoteId, Attachment attachment, @Nullable View.OnClickListener onClickListener, @ColorInt int mainColor) { + @Nullable final String uri = AttachmentUtil.getRemoteOrLocalUrl(account.getUrl(), cardRemoteId, attachment); + + super.bind(menuInflater, fragmentManager, cardRemoteId, attachment, onClickListener, mainColor, uri); + + getPreview().setImageResource(R.drawable.ic_image_grey600_24dp); + Glide.with(getPreview().getContext()) + .load(uri) + .placeholder(R.drawable.ic_image_grey600_24dp) + .error(R.drawable.ic_image_grey600_24dp) + .into(getPreview()); + itemView.setOnClickListener(onClickListener); } }
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java index b6a0c17a4..b3bba2f05 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java @@ -48,7 +48,7 @@ public class FilterDialogFragment extends BrandedDialogFragment { super.onCreate(savedInstanceState); indicator = getResources().getDrawable(R.drawable.circle_grey600_8dp); - indicator.setColorFilter(getResources().getColor(R.color.primary), PorterDuff.Mode.SRC_ATOP); + indicator.setColorFilter(getResources().getColor(R.color.defaultBrand), PorterDuff.Mode.SRC_ATOP); filterViewModel = new ViewModelProvider(requireActivity()).get(FilterViewModel.class); @@ -66,7 +66,7 @@ public class FilterDialogFragment extends BrandedDialogFragment { tab.setIcon(draft.getLabels().size() > 0 ? indicator : null); break; case 1: - tab.setIcon(draft.getUsers().size() > 0 ? indicator : null); + tab.setIcon(draft.getUsers().size() > 0 || draft.isNoAssignedUser() ? indicator : null); break; case 2: tab.setIcon(draft.getDueType() != EDueType.NO_FILTER ? indicator : null); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/AttachmentUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/AttachmentUtil.java index 6b2d6925f..844a301e8 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/util/AttachmentUtil.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/AttachmentUtil.java @@ -1,9 +1,12 @@ package it.niedermann.nextcloud.deck.util; import android.content.Context; +import android.content.Intent; import android.net.Uri; +import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import java.io.File; import java.io.FileNotFoundException; @@ -12,6 +15,8 @@ import java.io.IOException; import java.io.InputStream; import it.niedermann.nextcloud.deck.DeckLog; +import it.niedermann.nextcloud.deck.R; +import it.niedermann.nextcloud.deck.model.Attachment; /** * Created by stefan on 07.03.20. @@ -22,7 +27,34 @@ public class AttachmentUtil { private AttachmentUtil() { } - public static String getRemoteUrl(String accountUrl, long cardRemoteId, long attachmentRemoteId) { + /** + * @return {@link AttachmentUtil#getRemoteUrl} or {@link Attachment#getLocalPath()} as fallback in case this {@param attachment} has not yet been synced. + */ + @Nullable + public static String getRemoteOrLocalUrl(@NonNull String accountUrl, @Nullable Long cardRemoteId, @NonNull Attachment attachment) { + return (attachment.getId() == null || cardRemoteId == null) + ? attachment.getLocalPath() + : getRemoteUrl(accountUrl, cardRemoteId, attachment.getId()); + } + + /** + * Tries to open the given {@link Attachment} in web browser. Displays a toast on failure. + */ + public static void openAttachmentInBrowser(@NonNull Context context, @NonNull String accountUrl, Long cardRemoteId, Long attachmentRemoteId) { + if (cardRemoteId == null) { + Toast.makeText(context, R.string.card_does_not_yet_exist, Toast.LENGTH_LONG).show(); + DeckLog.logError(new IllegalArgumentException("cardRemoteId must not be null.")); + return; + } + if (attachmentRemoteId == null) { + Toast.makeText(context, R.string.attachment_does_not_yet_exist, Toast.LENGTH_LONG).show(); + DeckLog.logError(new IllegalArgumentException("attachmentRemoteId must not be null.")); + return; + } + context.startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse(AttachmentUtil.getRemoteUrl(accountUrl, cardRemoteId, attachmentRemoteId)))); + } + + private static String getRemoteUrl(@NonNull String accountUrl, @NonNull Long cardRemoteId, @NonNull Long attachmentRemoteId) { return accountUrl + "/index.php/apps/deck/cards/" + cardRemoteId + "/attachment/" + attachmentRemoteId; } diff --git a/app/src/main/res/drawable/ic_baseline_subject_24.xml b/app/src/main/res/drawable/ic_baseline_subject_24.xml new file mode 100644 index 000000000..37cd0c43d --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_subject_24.xml @@ -0,0 +1,5 @@ +<vector android:autoMirrored="true" android:height="24dp" + android:tint="#757575" android:viewportHeight="24" + android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF000000" android:pathData="M14,17L4,17v2h10v-2zM20,9L4,9v2h16L20,9zM4,15h16v-2L4,13v2zM4,5v2h16L20,5L4,5z"/> +</vector> diff --git a/app/src/main/res/layout/activity_exception.xml b/app/src/main/res/layout/activity_exception.xml index 881c8fa85..932fa7bf2 100644 --- a/app/src/main/res/layout/activity_exception.xml +++ b/app/src/main/res/layout/activity_exception.xml @@ -30,7 +30,6 @@ android:layout_weight="1" android:hint="An error appeared." app:drawableEndCompat="@drawable/ic_bug_report_black_24dp" - app:drawableRightCompat="@drawable/ic_bug_report_black_24dp" tools:ignore="HardcodedText" /> </LinearLayout> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e0af061bf..ac0dadf82 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -45,7 +45,6 @@ android:paddingEnd="@dimen/spacer_1hx" android:text="@string/info_box_maintenance_mode" android:textColor="@color/grey600" - app:drawableLeftCompat="@drawable/ic_info_outline_grey600_24dp" app:drawableStartCompat="@drawable/ic_info_outline_grey600_24dp" /> </LinearLayout> @@ -71,7 +70,6 @@ android:paddingEnd="@dimen/spacer_1hx" android:text="@string/info_box_version_not_supported" android:textColor="@android:color/white" - app:drawableLeftCompat="@drawable/ic_warning_white_24dp" app:drawableStartCompat="@drawable/ic_warning_white_24dp" /> </LinearLayout> diff --git a/app/src/main/res/layout/item_card_compact.xml b/app/src/main/res/layout/item_card_compact.xml index 457aa0d25..ce5ef98f7 100644 --- a/app/src/main/res/layout/item_card_compact.xml +++ b/app/src/main/res/layout/item_card_compact.xml @@ -62,6 +62,7 @@ android:drawablePadding="@dimen/spacer_1hx" android:gravity="center" android:padding="@dimen/spacer_1hx" + android:paddingEnd="@dimen/spacer_1x" android:textColor="@color/fg_secondary" app:drawableStartCompat="@drawable/calendar_blank_grey600_24dp" tools:text="tomorrow" /> diff --git a/app/src/main/res/layout/item_card_default.xml b/app/src/main/res/layout/item_card_default.xml index 01970ef57..724d4dd4f 100644 --- a/app/src/main/res/layout/item_card_default.xml +++ b/app/src/main/res/layout/item_card_default.xml @@ -9,8 +9,8 @@ android:layout_marginTop="@dimen/spacer_1x" android:layout_marginEnd="@dimen/spacer_2x" android:layout_marginBottom="@dimen/spacer_1x" - app:cardBackgroundColor="@color/bg_card" - android:focusable="true"> + android:focusable="true" + app:cardBackgroundColor="@color/bg_card"> <LinearLayout android:layout_width="match_parent" @@ -32,8 +32,8 @@ android:layout_height="wrap_content" android:layout_marginTop="4sp" android:layout_weight="1" - android:textSize="18sp" android:textColor="?attr/colorAccent" + android:textSize="18sp" tools:ignore="RtlSymmetry" tools:text="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut l" /> @@ -62,6 +62,7 @@ android:drawablePadding="@dimen/spacer_1hx" android:gravity="center" android:padding="@dimen/spacer_1hx" + android:paddingEnd="@dimen/spacer_1x" android:textColor="@color/fg_secondary" app:drawableStartCompat="@drawable/calendar_blank_grey600_24dp" tools:text="tomorrow" /> @@ -100,7 +101,6 @@ android:drawablePadding="@dimen/spacer_1hx" android:gravity="center_vertical" android:padding="@dimen/spacer_1hx" - app:drawableLeftCompat="@drawable/ic_comment_white_24dp" app:drawableStartCompat="@drawable/ic_comment_white_24dp" app:drawableTint="@color/grey600" tools:text="2" /> @@ -111,8 +111,7 @@ android:layout_height="wrap_content" android:gravity="center_vertical" android:padding="@dimen/spacer_1hx" - app:drawableLeftCompat="@drawable/ic_check_grey600_24dp" - app:drawableStartCompat="@drawable/ic_check_grey600_24dp" + tools:drawableStartCompat="@drawable/ic_check_grey600_24dp" tools:text="1/2" /> <androidx.appcompat.widget.AppCompatTextView @@ -121,7 +120,6 @@ android:layout_height="wrap_content" android:gravity="center_vertical" android:padding="@dimen/spacer_1hx" - app:drawableLeftCompat="@drawable/ic_attach_file_grey600_24dp" app:drawableStartCompat="@drawable/ic_attach_file_grey600_24dp" tools:text="3" /> </LinearLayout> diff --git a/app/src/main/res/layout/item_card_default_only_title.xml b/app/src/main/res/layout/item_card_default_only_title.xml index 7d32e7f44..67dace190 100644 --- a/app/src/main/res/layout/item_card_default_only_title.xml +++ b/app/src/main/res/layout/item_card_default_only_title.xml @@ -58,6 +58,7 @@ android:drawablePadding="@dimen/spacer_1hx" android:gravity="center" android:padding="@dimen/spacer_1hx" + android:paddingEnd="@dimen/spacer_1x" android:textColor="@color/fg_secondary" app:drawableStartCompat="@drawable/calendar_blank_grey600_24dp" tools:text="tomorrow" /> diff --git a/app/src/main/res/layout/item_tip.xml b/app/src/main/res/layout/item_tip.xml index 2177d013c..fc2d3587a 100644 --- a/app/src/main/res/layout/item_tip.xml +++ b/app/src/main/res/layout/item_tip.xml @@ -15,7 +15,6 @@ android:drawablePadding="@dimen/spacer_2x" android:gravity="start|center" android:textAppearance="?attr/textAppearanceListItem" - app:drawableLeftCompat="@drawable/ic_lightbulb_outline_grey600_24dp" app:drawableStartCompat="@drawable/ic_lightbulb_outline_grey600_24dp" tools:maxLength="200" tools:text="@tools:sample/lorem/random" /> diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 1e3f1fb8b..d11a012eb 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">Desactivat</string> <string name="simple_copied">Copiat</string> <string name="simple_archive">Arxiu</string> - <string name="edit_board">Edita el tauler</string> <string name="archive_board">Arxiva el tauler</string> <string name="delete_board">Suprimeix el tauler</string> @@ -245,4 +244,5 @@ <string name="simple_reply">Respon</string> <string name="simple_report">Informar</string> <string name="error_action_open_battery_settings">Paràmetres de la bateria</string> -</resources> + <string name="clone_board">Clonar tauler</string> + </resources> diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 06d1fb151..902e839c6 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">vypnuto</string> <string name="simple_copied">Zkopírováno</string> <string name="simple_archive">Archiv</string> + <string name="simple_unassigned">Nepřiřazeno</string> <string name="edit_board">Upravit tabuli</string> <string name="archive_board">Archivovat tabuli</string> @@ -263,4 +264,10 @@ </plurals> <string name="simple_report">Hlášení</string> <string name="error_action_open_battery_settings">Nastavení správy napájení</string> + <string name="move_warning">Při přesunutí karty na jinou tabuli není možné přenést také komentáře či přílohy.</string> + <string name="clone_board">Klonovat tabuli</string> + <string name="cloning_board">Klonování %1$s…</string> + <string name="successfully_cloned_board">%1$s úspěšně naklonováno</string> + <string name="attachment_does_not_yet_exist">Příloha ještě neexistuje v Deck</string> + <string name="card_does_not_yet_exist">Karta ještě neexistuje v Deck</string> </resources> diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 8ac1e8373..efd98ec81 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -37,7 +37,6 @@ <string name="simple_disabled">slået fra</string> <string name="simple_copied">opieret</string> <string name="simple_archive">Arkivér</string> - <string name="edit_board">Rediger liste</string> <string name="archive_board">Arkivér liste</string> <string name="delete_board">Slet liste</string> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b0e4128b8..74aae9b0e 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -24,7 +24,7 @@ <string name="simple_switch">Wechseln</string> <string name="simple_filter">Filter</string> <string name="simple_overdue">Überfällig</string> - <string name="simple_clear">Löschen</string> + <string name="simple_clear">Leeren</string> <string name="simple_discard">Verwerfen</string> <string name="simple_update">Aktualisieren</string> <string name="simple_delete">Löschen</string> @@ -38,6 +38,7 @@ <string name="simple_disabled">Deaktiviert</string> <string name="simple_copied">Kopiert</string> <string name="simple_archive">Archivieren</string> + <string name="simple_unassigned">Nicht zugewiesen</string> <string name="edit_board">Board bearbeiten</string> <string name="archive_board">Board archivieren</string> @@ -96,7 +97,7 @@ <string name="action_card_delete">Karte löschen</string> <string name="add_board">Board hinzufügen</string> - <string name="label_clear_due_date">Fälligkeitsdatum löschen</string> + <string name="label_clear_due_date">Fälligkeitsdatum entfernen</string> <string name="label_add">%1$s hinzufügen</string> <string name="card_edit_details">Details</string> @@ -217,12 +218,12 @@ <string name="error_dialog_title">Oh nein - Was jetzt? 🙁</string> <string name="error_dialog_tip_token_mismatch_retry">Bitte versuchen Sie, das Schließen der App zu erzwingen und erneut zu starten. Möglicherweise bestand eine gestörte Verbindung zur Nextcloud-App.</string> - <string name="error_dialog_tip_token_mismatch_clear_storage">Falls dieser Fehler weiterhin besteht können Sie versuchen den Speicherinhalt der beiden Apps Nextcloud und Nextcloud Deck zu löschen um das Problem zu beheben.</string> - <string name="error_dialog_tip_database_upgrade_failed">Die Aktualisierung der Datenbank ist fehlgeschlagen. Bitte melden Sie das Problem und löschen Sie den Speicher, um die App normal zu verwenden.</string> - <string name="error_dialog_tip_clear_storage">Sie können den Speicherinhalt löschen indem Sie die App öffnen und Speicher → Speicherinhalt löschen auswählen.</string> + <string name="error_dialog_tip_token_mismatch_clear_storage">Falls dieser Fehler weiterhin besteht können Sie versuchen den Speicherinhalt der beiden Apps Nextcloud und Nextcloud Deck zu leeren um das Problem zu beheben.</string> + <string name="error_dialog_tip_database_upgrade_failed">Die Aktualisierung der Datenbank ist fehlgeschlagen. Bitte melden Sie das Problem und leeren Sie den Speicher, um die App normal zu verwenden.</string> + <string name="error_dialog_tip_clear_storage">Sie können den Speicherinhalt leeren indem Sie die App öffnen und Speicher → Speicherinhalt löschen auswählen.</string> <string name="error_dialog_tip_files_outdated">Sie scheinen eine alte Version der Nextcloud-App installiert zu haben. Bitte besuchen Sie den Play Store oder F-Droid, um die neueste Version zu installieren.</string> <string name="error_dialog_tip_files_force_stop">Etwas scheint bei der Nextcloud App nicht zu funktionieren. Bitte versuchen Sie sowohl die Nextcloud App als auch die Nextcloud Deck App zu stoppen.</string> - <string name="error_dialog_tip_files_delete_storage">Wenn das erzwungene Stoppen nicht hilft, können Sie versuchen, den Speicher beider Apps zu löschen.</string> + <string name="error_dialog_tip_files_delete_storage">Wenn das erzwungene Stoppen nicht hilft, können Sie versuchen, den Speicher beider Apps zu leeren .</string> <string name="error_dialog_timeout_instance">Der Server reagierte nicht in der üblichen Zeit. Bitte stellen Sie sicher, dass Ihre Instanz einwandfrei läuft.</string> <string name="error_dialog_timeout_toggle">Überprüfen Sie Ihre Netzwerkverbindung. Manchmal kann es hilfreich sein, die mobilen Daten oder das WLAN aus- und wieder einzuschalten.</string> <string name="error_dialog_check_server">Die Antwort des Servers war fehlerhaft. Bitte überprüfen Sie ob die Deck App über die Weboberfläche erreichbar ist.</string> @@ -257,4 +258,10 @@ </plurals> <string name="simple_report">Melden</string> <string name="error_action_open_battery_settings">Batterie-Einstellungen</string> + <string name="move_warning">Beim Verschieben einer Karte auf ein anderes Board werden weder Kommentare noch Anhänge transferriert.</string> + <string name="clone_board">Board klonen</string> + <string name="cloning_board">Klone %1$s…</string> + <string name="successfully_cloned_board">%1$s erfolgreich geklont</string> + <string name="attachment_does_not_yet_exist">Anhang existiert bislang nicht in Deck</string> + <string name="card_does_not_yet_exist">Karte existiert bislang nicht in Deck</string> </resources> diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index cb1f66037..0c0226f2a 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">απενεργοποιημένο</string> <string name="simple_copied">Αντιγράφτηκε</string> <string name="simple_archive">Αρχειοθέτηση</string> - <string name="edit_board">Επεξεργασία πίνακα</string> <string name="archive_board">Αρχειοθέτηση πίνακα</string> <string name="delete_board">Διαγραφή πίνακα</string> @@ -257,4 +256,5 @@ </plurals> <string name="simple_report">Αναφορά</string> <string name="error_action_open_battery_settings">Ρυθμίσεις μπαταρίας</string> -</resources> + <string name="clone_board">Κλωνοποίηση πίνακα</string> + </resources> diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 9bd01d6dd..814a11013 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">deshabilitado</string> <string name="simple_copied">Copiado</string> <string name="simple_archive">Archivar</string> + <string name="simple_unassigned">No asignado</string> <string name="edit_board">Editar tablero</string> <string name="archive_board">Archivar tablero</string> @@ -129,6 +130,7 @@ <string name="delete_board_message">Esto borrará permanente el tablero, incluyendo todas las listas y tarjetas.</string> <string name="settings_theme_title">Tema oscuro</string> <string name="settings_branding_title">Branding</string> + <string name="settings_compact_title">Modo compacto 🆕</string> <string name="settings_background_sync">Sincronización en segundo plano</string> <string name="pref_value_wifi_and_mobile">Sincronizar sobre Wi-Fi y datos móviles</string> <string name="pref_value_wifi_only">Sincronizar solo sobre Wi-Fi</string> @@ -217,6 +219,7 @@ <string name="error_dialog_title">Oh no - ¿Ahora qué? 🙁</string> <string name="error_dialog_tip_token_mismatch_retry">Por favor, intenta forzar el cierre de la aplicación y vuelve a abrirla. Es posible que haya habido un problema de conexión con la aplicación Nextcloud.</string> <string name="error_dialog_tip_token_mismatch_clear_storage">Si el problema persiste, intenta limpiar borrar el almacenamiento de ambas apps, Nextcloud y Nextcloud Deck para solucionar este problema.</string> + <string name="error_dialog_tip_database_upgrade_failed">Falló la actualización de la base de datos. Por favor, informe del problema y limpie el almacenamiento para usar la aplicación de manera normal.</string> <string name="error_dialog_tip_clear_storage">Puedes limpiar el almacenamiento abriendo la información de la app y seleccionando Almacenamiento → Eliminar datos.</string> <string name="error_dialog_tip_files_outdated">Su aplicación Nextcloud parece que está desactualizada. Por favor visite la Play Store o F-Droid para conseguir la versión más reciente.</string> <string name="error_dialog_tip_files_force_stop">Algo parece ir mal en tu app de Nextcloud. Por favor, intenta forzar el cierre de ambas, Nextcloud y Nextcloud Deck.</string> @@ -255,4 +258,10 @@ </plurals> <string name="simple_report">Informe</string> <string name="error_action_open_battery_settings">Ajustes de batería</string> + <string name="move_warning">No se pueden transferir cio los comentarios ni los adjuntos al mover una tarjeta a otro tablero.</string> + <string name="clone_board">Clonar tablero</string> + <string name="cloning_board">Clonando %1$s…</string> + <string name="successfully_cloned_board">Clonados con éxito %1$s</string> + <string name="attachment_does_not_yet_exist">El adjunto todavía no existe en Deck</string> + <string name="card_does_not_yet_exist">La tarjeta todavía no existe en Deck</string> </resources> diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index e704e9fcd..e61e068a3 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">desgaituta</string> <string name="simple_copied">Kopiatuta</string> <string name="simple_archive">Artxibatu</string> - <string name="edit_board">Editatu mahaia</string> <string name="archive_board">Artxibatu mahaia</string> <string name="delete_board">Ezabatu mahaia</string> @@ -250,4 +249,5 @@ <string name="add_text_as_comment">Gehitu iruzkin gisa</string> <string name="simple_report">Jakinarazi</string> <string name="error_action_open_battery_settings">Bateria ezarpenak</string> -</resources> + <string name="clone_board">Klonatu taula</string> + </resources> diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 6c6d1792e..c127f936b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">désactivé</string> <string name="simple_copied">Copié</string> <string name="simple_archive">Archiver</string> + <string name="simple_unassigned">Non attribué</string> <string name="edit_board">Modifier le tableau</string> <string name="archive_board">Archiver le tableau</string> @@ -257,4 +258,10 @@ </plurals> <string name="simple_report">Signaler</string> <string name="error_action_open_battery_settings">Paramètres de batterie</string> + <string name="move_warning">Ni les commentaires ni les pièces jointes ne peuvent être transférés lorsque la carte est déplacée sur un autre tableau.</string> + <string name="clone_board">Dupliquer le tableau</string> + <string name="cloning_board">Clonage de %1$s…</string> + <string name="successfully_cloned_board">Cloné avec succès %1$s</string> + <string name="attachment_does_not_yet_exist">Pièce jointe non encore présente dans le tableau</string> + <string name="card_does_not_yet_exist">Carte non encore présente dans le tableau</string> </resources> diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index e4a279121..d847e2849 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">desactivado</string> <string name="simple_copied">Copiada</string> <string name="simple_archive">Aquivar</string> + <string name="simple_unassigned">Desasignado</string> <string name="edit_board">Editar taboleiro</string> <string name="archive_board">Arquivar taboleiro</string> @@ -257,4 +258,10 @@ </plurals> <string name="simple_report">Informe</string> <string name="error_action_open_battery_settings">Axustes da batería</string> + <string name="move_warning">Non é posíbel transferir nin comentarios nin ficheiros anexos ao mover a tarxeta a outro taboleiro.</string> + <string name="clone_board">Clonar taboleiro</string> + <string name="cloning_board">Clonando %1$s…</string> + <string name="successfully_cloned_board">%1$s foi clonado satisfactoriamente</string> + <string name="attachment_does_not_yet_exist">Aínda non existe o anexo no Deck</string> + <string name="card_does_not_yet_exist">Aínda non existe a tarxeta no Deck</string> </resources> diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index ba71635e7..fedc64ee4 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">מושבת</string> <string name="simple_copied">הועתק</string> <string name="simple_archive">לארכיון</string> - <string name="edit_board">ערוך לוח</string> <string name="archive_board">לוח פעיל</string> <string name="delete_board">מחק לוח</string> @@ -229,4 +228,5 @@ <string name="manage_accounts">ניהול חשבונות</string> <string name="simple_reply">תגובה</string> <string name="simple_report">דיווח</string> + <string name="clone_board">שכפול לוח</string> </resources> diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index ed1573282..ed6e03a22 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">onemogućeno</string> <string name="simple_copied">Kopirano</string> <string name="simple_archive">Arhiva</string> - <string name="edit_board">Uredi ploču</string> <string name="archive_board">Arhiviraj ploču</string> <string name="delete_board">Izbriši ploču</string> @@ -233,4 +232,5 @@ <string name="manage_accounts">Upravljaj računima</string> <string name="simple_reply">Odgovori</string> <string name="simple_report">Prijavi</string> + <string name="clone_board">Kloniraj ploču</string> </resources> diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index fc6e5ea13..c077b93ac 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">letiltva</string> <string name="simple_copied">Másolva</string> <string name="simple_archive">Archívum</string> - <string name="edit_board">Tábla szerkesztése</string> <string name="archive_board">Tábla archiválása</string> <string name="delete_board">Tábla törlése</string> @@ -242,4 +241,5 @@ <string name="manage_accounts">Fiókok kezelése</string> <string name="simple_reply">Válasz</string> <string name="simple_report">Jelentés</string> + <string name="clone_board">Tábla klónozása</string> </resources> diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index b3cee302e..86ed1d3e1 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">disabilitato</string> <string name="simple_copied">Copiato</string> <string name="simple_archive">Archivio</string> + <string name="simple_unassigned">Non assegnato</string> <string name="edit_board">Modifica lavagna</string> <string name="archive_board">Archivia lavagna</string> @@ -257,4 +258,10 @@ </plurals> <string name="simple_report">Segnala</string> <string name="error_action_open_battery_settings">Impostazioni batteria</string> + <string name="move_warning">Né i commenti, né gli allegati possono essere trasferiti quando si sposta la scheda su un\'altra lavagna.</string> + <string name="clone_board">Clona lavagna</string> + <string name="cloning_board">Clonazione di %1$s…</string> + <string name="successfully_cloned_board">%1$s clonato correttamente</string> + <string name="attachment_does_not_yet_exist">L\'allegato non esiste ancora in Deck</string> + <string name="card_does_not_yet_exist">La scheda non esiste ancora in Deck</string> </resources> diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 7934aa0aa..56ed62eec 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">無効</string> <string name="simple_copied">コピーしました</string> <string name="simple_archive">アーカイブ</string> - <string name="edit_board">ボードを編集</string> <string name="archive_board">ボードをアーカイブ</string> <string name="delete_board">ボードを削除</string> diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index d45e135d1..3007b145d 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">비활성화</string> <string name="simple_copied">복사됨</string> <string name="simple_archive">보관</string> - <string name="edit_board">게시판 편집</string> <string name="archive_board">게시판 보관</string> <string name="delete_board">게시판 삭제</string> diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 92ba83726..6e9dec214 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">uitgeschakeld</string> <string name="simple_copied">Gekopieerd</string> <string name="simple_archive">Archiveer</string> - <string name="edit_board">Pas bord aan</string> <string name="archive_board">Archiveer bord</string> <string name="delete_board">Bord verwijderen</string> @@ -241,4 +240,5 @@ <string name="manage_accounts">Accounts beheren </string> <string name="simple_reply">Antwoord</string> <string name="simple_report">Rapporteer</string> + <string name="clone_board">Dupliceer bord</string> </resources> diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 1dc85ba54..97ca2a23e 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">wyłączony</string> <string name="simple_copied">Skopiowano</string> <string name="simple_archive">Archiwizuj</string> + <string name="simple_unassigned">Nieprzypisane</string> <string name="edit_board">Edytuj tablicę</string> <string name="archive_board">Zarchiwizuj tablicę</string> @@ -263,4 +264,10 @@ </plurals> <string name="simple_report">Raport</string> <string name="error_action_open_battery_settings">Ustawienia baterii</string> + <string name="move_warning">Nie można przenosić komentarzy, ani załączników karty na inną tablicę.</string> + <string name="clone_board">Klonuj tablicę</string> + <string name="cloning_board">Klonowanie %1$s…</string> + <string name="successfully_cloned_board">Pomyślnie sklonowano %1$s</string> + <string name="attachment_does_not_yet_exist">Załącznik nie istnieje jeszcze w Deck</string> + <string name="card_does_not_yet_exist">Karta nie istnieje jeszcze w Deck</string> </resources> diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 8d8822f9e..f1225028c 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">desativado</string> <string name="simple_copied">Copiado</string> <string name="simple_archive">Arquivados</string> + <string name="simple_unassigned">Não atribuído</string> <string name="edit_board">Editar painel</string> <string name="archive_board">Arquivar painel</string> @@ -257,4 +258,10 @@ </plurals> <string name="simple_report">Reportar</string> <string name="error_action_open_battery_settings">Configurações da bateria</string> + <string name="move_warning">Comentários ou anexos não podem ser transferidos ao mover o cartão para outra placa.</string> + <string name="clone_board">Clonar painel</string> + <string name="cloning_board">Clonando %1$s…</string> + <string name="successfully_cloned_board">%1$s clonado com sucesso</string> + <string name="attachment_does_not_yet_exist">O anexo ainda não existe no Deck</string> + <string name="card_does_not_yet_exist">O cartão ainda não existe no Deck</string> </resources> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a338d3505..122b5e04d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">отключено</string> <string name="simple_copied">Скопировано</string> <string name="simple_archive">Переместить в архив</string> - <string name="edit_board">Редактировать доску</string> <string name="archive_board">Переместить доску в архив</string> <string name="delete_board">Удалить доску</string> @@ -261,4 +260,5 @@ </plurals> <string name="simple_report">Сообщить</string> <string name="error_action_open_battery_settings">Настройки аккумулятора</string> -</resources> + <string name="clone_board">Скопировать доску</string> + </resources> diff --git a/app/src/main/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml index 51b963d38..fd405ebb4 100644 --- a/app/src/main/res/values-sk-rSK/strings.xml +++ b/app/src/main/res/values-sk-rSK/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">zakázané</string> <string name="simple_copied">Skopírované</string> <string name="simple_archive">Archivovať</string> + <string name="simple_unassigned">Nepriradený</string> <string name="edit_board">Upraviť nástenku</string> <string name="archive_board">Archivovať nástenku</string> @@ -133,6 +134,7 @@ <string name="delete_board_message">Táto nástenka sa natrvalo odstráni, vrátane všetkých zoznamov a kariet.</string> <string name="settings_theme_title">Tmavý motív</string> <string name="settings_branding_title">Použitie vlastného loga</string> + <string name="settings_compact_title">Kompaktný režim 🆕</string> <string name="settings_background_sync">Synchronizácia na pozadí</string> <string name="pref_value_wifi_and_mobile">Synchronizovať na Wi-Fi a mobilných dátach</string> <string name="pref_value_wifi_only">Synchronizovať len na Wi-Fi</string> @@ -221,6 +223,7 @@ <string name="error_dialog_title">Ale nie - Čo teraz? 🙁</string> <string name="error_dialog_tip_token_mismatch_retry">Skúste vyinútiť zatvorenie aplikácie a znova ju reštartovať. Možno došlo k chybnému pripojeniu k aplikácii Nextcloud.</string> <string name="error_dialog_tip_token_mismatch_clear_storage">Ak problém pretrváva, pokúste sa tento problém vyriešiť vymazaním úložiska oboch aplikácií: Nextcloud a Nextcloud Deck.</string> + <string name="error_dialog_tip_database_upgrade_failed">Aktualizácia databázy zlyhala. Nahláste problém a vymažte ukladací priestor, aby ste aplikáciu mohli normálne používať.</string> <string name="error_dialog_tip_clear_storage">Úložisko môžete vyčistiť otvorením informácii o aplikácii a výberom Úložisko → Vyčistiť úložisko.</string> <string name="error_dialog_tip_files_outdated">Váš Nextcloud vyzerá byť zastaralý. Navštívte Play Store alebo F-Droid pre získanie najnovšej verzie.</string> <string name="error_dialog_tip_files_force_stop">Zdá sa, že s Nextcloudom niečo nie je v poriadku. Pokúste sa vynútiť zastavenie aplikácie Nextcloud aj aplikácie Nextcloud Deck.</string> @@ -261,4 +264,8 @@ </plurals> <string name="simple_report">Hlásenie</string> <string name="error_action_open_battery_settings">Nastavenia batérie.</string> -</resources> + <string name="move_warning">Pri presúvaní karty na inú nástenku nie je možné prenášať komentáre ani prílohy.</string> + <string name="clone_board">Duplikovať nástenku</string> + <string name="cloning_board">Klonovanie %1$s…</string> + <string name="successfully_cloned_board">%1$s úspešne klonovaný</string> + </resources> diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 84239bb54..43e79d280 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">onemogočeno</string> <string name="simple_copied">Kopirano!</string> <string name="simple_archive">Arhiv</string> + <string name="simple_unassigned">Nedodeljeno</string> <string name="edit_board">Uredi zbirko</string> <string name="archive_board">Arhiviraj zbirko</string> @@ -133,6 +134,7 @@ <string name="delete_board_message">S tem dejanjem bo zbirka z vsemi paketi nalog in nalogami trajno izbrisana.</string> <string name="settings_theme_title">Temna tema</string> <string name="settings_branding_title">Prilagajanje oblikovanja</string> + <string name="settings_compact_title">Stisnjen pogled 🆕</string> <string name="settings_background_sync"> Usklajevanje v ozadju</string> <string name="pref_value_wifi_and_mobile">Usklajuj na Wi-Fi in mobilni povezavi</string> <string name="pref_value_wifi_only">Usklajuj le na Wi-Fi</string> @@ -221,6 +223,7 @@ <string name="error_dialog_title">Ojoj, kaj pa zdaj? 🙁</string> <string name="error_dialog_tip_token_mismatch_retry">Poskusite vsiliti končanje programa in ga ponovno zagnati. Morda je težava v neustrezni povezavi z okoljem Nextcloud</string> <string name="error_dialog_tip_token_mismatch_clear_storage">Če se težava še naprej pojavlja, poskusite počistiti podatke programa Nextcloud in Nextcloud Deck.</string> + <string name="error_dialog_tip_database_upgrade_failed">Nadgradnja podatkovne zbirke je spodletela. Pošljite poročilo o napaki in nato počistite shrambo za normalno uporabo programa.</string> <string name="error_dialog_tip_clear_storage">Shrambo je mogoče počistiti med podrobnostmi programa Shramba → Počisti shrambo.</string> <string name="error_dialog_tip_files_outdated">Program Nextcloud je očitno starejše različice. Posodobite jo prek Trgovine Play ali s posodabljalnikom F-Droid.</string> <string name="error_dialog_tip_files_force_stop">Kaže, da je nekaj narobe s programom Nextcloud. Poskusite vsiljeno zaustaviti programa Nextcloud in Nextcloud Deck.</string> @@ -236,6 +239,7 @@ <string name="error_dialog_version_not_parsable">Ni mogoče določiti različice strežnika, povezanega s programom Deck. Prepričajte se, da je nameščen in omogočen.</string> <string name="error_dialog_capabilities_not_parsable">Ni mogoče pridobiti podatkov o zmožnostih strežnika. Prepričajte se, da strežnik teče in da imajo programi dostop do okolja Nextcloud.</string> <string name="error_dialog_attachment_upload_failed">Priloge ni mogoče poslati. Souporabo omogočite na nek drug način, nam pa posredujte poročilo o hrošču.</string> + <string name="error_dialog_tip_disable_battery_optimizations">Onemogočite vso optimizacijo porabe baterije za programa Nextcloud in Deck.</string> <string name="error_action_open_deck_info">Odpri podrobnosti programa</string> <string name="error_action_open_network">Nastavitve omrežja</string> <string name="error_action_server_logs">Dnevniki strežnika</string> @@ -259,4 +263,11 @@ <item quantity="other">%1$d napak med pošiljanjem</item> </plurals> <string name="simple_report">Poročilo</string> - </resources> + <string name="error_action_open_battery_settings">Nastavitve baterije</string> + <string name="move_warning">Ni mogoče prenesti ne opomb ne prilog med premikanjem naloge v drugo zbirko.</string> + <string name="clone_board">Kloniraj zbirko</string> + <string name="cloning_board">Poteka kloniranje %1$s…</string> + <string name="successfully_cloned_board">Kloniranje %1$s je uspešno končano</string> + <string name="attachment_does_not_yet_exist">Priloga v Deck še ne obstaja</string> + <string name="card_does_not_yet_exist">Naloga v Deck še ne obstaja</string> +</resources> diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 0af202087..0376ba1b7 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">искључено</string> <string name="simple_copied">Копирано</string> <string name="simple_archive">Архива</string> + <string name="simple_unassigned">Недодељен</string> <string name="edit_board">Измени таблу</string> <string name="archive_board">Архивирај таблу</string> @@ -131,6 +132,7 @@ <string name="delete_board_message">Ово ће трајно да уклони ову таблу укључујући све спискове и картице.</string> <string name="settings_theme_title">Тамна тема</string> <string name="settings_branding_title">Брендирање</string> + <string name="settings_compact_title">Компактни режим 🆕</string> <string name="settings_background_sync">Позадинска синхронизација</string> <string name="pref_value_wifi_and_mobile">Синхронизуј и на бежичној и на мобилној вези</string> <string name="pref_value_wifi_only">Синхронизуј само преко бежичне везе</string> @@ -219,6 +221,7 @@ <string name="error_dialog_title">О, не - шта сад? 🙁</string> <string name="error_dialog_tip_token_mismatch_retry">Покушајте да форсирано затворите апликацију и стартујете је поново. Можда је била неисправна конекција ка Некстклауд апликацији.</string> <string name="error_dialog_tip_token_mismatch_clear_storage">Ако проблем настави да се дешава, пробајте да очистите податке од обе апликације: и Некстклауд и Некстклауд Шпила да бисте решили проблем.</string> + <string name="error_dialog_tip_database_upgrade_failed">Ажурирање базе није успело. Пријавите овај проблем и очистите складиште да користите апликацију нормално.</string> <string name="error_dialog_tip_clear_storage">Складиште можете очистити ако отворите информације о апликацији и бирањем Меморија → Обриши податке.</string> <string name="error_dialog_tip_files_outdated">Изгледа да је верзија Некстклауд апликације стара. Посетите Play Store или Ф-дроид да скинете најновију верзију.</string> <string name="error_dialog_tip_files_force_stop">Нешто није у реду да Вашом Некстклауд апликацијом. Пробајте да форсирано зауставите обе, и Некстклауд апликацију и апликацију Некстклауд Шпила.</string> @@ -233,6 +236,8 @@ <string name="error_dialog_redirect">Сервер је одговорио са HTTP 302 кодом, што значи да немате инсталирану Deck апликацију или да Вам сервер није правилно конфигурисан. Ово може да буде проузорковано произвољним додавањима у .htaccess фајлу или другим Некстклауд апликацијама као што је OID Client.</string> <string name="error_dialog_version_not_parsable">Не можемо да одредимо серверску верзију апликације Шпила. Проверите да ли је инсталирана и укључена.</string> <string name="error_dialog_capabilities_not_parsable">Не можемо да дохватимо могућности Вашег сервера. Проверите да Вам сервер ради добро и да ли друге клијентске апликације могу да му приступе.</string> + <string name="error_dialog_attachment_upload_failed">Прилог није могао бити отпремљен. Молимо пробајте да га поделите на други начин и пријавите нам ову грешку.</string> + <string name="error_dialog_tip_disable_battery_optimizations">Искључите све оптимизације батерије за Некстаклауд и Шпил апликације.</string> <string name="error_action_open_deck_info">Отвори инфо о апликацији</string> <string name="error_action_open_network">Поставке мреже</string> <string name="error_action_server_logs">Дневник са сервера</string> @@ -256,4 +261,10 @@ </plurals> <string name="simple_report">Пријави</string> <string name="error_action_open_battery_settings">Подешавања батерије</string> + <string name="move_warning">Ни коментари ни прилози не могу да се пребаце када се картица помера на другу таблу.</string> + <string name="clone_board">Клонирај таблу</string> + <string name="cloning_board">Клонирам %1$s…</string> + <string name="successfully_cloned_board">Успешно клониран %1$s</string> + <string name="attachment_does_not_yet_exist">Прилог још не постоји у Шпил апликацији</string> + <string name="card_does_not_yet_exist">Картица још не постоји у Шпил апликацији</string> </resources> diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 11c7b3500..d56d64a7e 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">inaktiverad</string> <string name="simple_copied">Kopierad</string> <string name="simple_archive">Arkivera</string> - <string name="edit_board">Ändra tavla</string> <string name="archive_board">Arkivera tavla</string> <string name="delete_board">Radera tavla</string> @@ -235,4 +234,5 @@ <item quantity="other">%1$d fel vid uppladdning</item> </plurals> <string name="simple_report">Rapportera</string> + <string name="clone_board">Kopiera tavla</string> </resources> diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 7b35c3683..df3186a1a 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -38,6 +38,7 @@ <string name="simple_disabled">devre dışı</string> <string name="simple_copied">Kopyalandı</string> <string name="simple_archive">Arşivle</string> + <string name="simple_unassigned">Atanmamış</string> <string name="edit_board">Panoyu düzenle</string> <string name="archive_board">Panoyu arşivle</string> @@ -257,4 +258,8 @@ </plurals> <string name="simple_report">Hata bildirin</string> <string name="error_action_open_battery_settings">Pil ayarları</string> -</resources> + <string name="move_warning">Kart başka bir panoya taşınırken yorum ya da ek dosyalar aktarılamaz.</string> + <string name="clone_board">Panoyu kopyala</string> + <string name="cloning_board">%1$s kopyalanıyor…</string> + <string name="successfully_cloned_board">%1$s kopyalandı</string> + </resources> diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 24f1a7d0f..27daca4cf 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">вимкнено</string> <string name="simple_copied">Скопійовано</string> <string name="simple_archive">Архів</string> - <string name="edit_board">Редагувати дошку</string> <string name="archive_board">Архівувати дошку</string> <string name="delete_board">Вилучити дошку</string> diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index cdfb70ae2..b8af40813 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -38,7 +38,6 @@ <string name="simple_disabled">已禁用</string> <string name="simple_copied">已复制</string> <string name="simple_archive">归档</string> - <string name="edit_board">编辑面板</string> <string name="archive_board">归档面板</string> <string name="delete_board">删除面板</string> @@ -225,4 +224,5 @@ <string name="manage_accounts">管理账号</string> <string name="simple_reply">回复</string> <string name="simple_report">报告</string> + <string name="clone_board">克隆面板</string> </resources> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ca7cc2fb8..0bc17f30e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -288,6 +288,8 @@ <string name="clone_board">Clone board</string> <string name="cloning_board">Cloning %1$s…</string> <string name="successfully_cloned_board">Successfully cloned %1$s</string> + <string name="attachment_does_not_yet_exist">Attachment does not yet exist in Deck</string> + <string name="card_does_not_yet_exist">Card does not yet exist in Deck</string> <string name="widget_stack_title">Stack</string> <string name="widget_stack_header_icon">Widget header icon</string> |