Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstefan-niedermann <info@niedermann.it>2020-03-01 20:05:13 +0300
committerNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2020-03-04 22:42:44 +0300
commitf1ef8ef4b388f0da8765767191bcbdda8f6e3958 (patch)
treedbced8079332093eb1b88c814d0a1fc8af254822
parentb49dc9f3c0c3c721b284f382d8c30915354f5b92 (diff)
#285 Migrate from ButterKnife to ViewBinding
-rw-r--r--app/build.gradle4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/AboutActivity.java51
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java93
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/SettingsActivity.java12
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentContributingTab.java36
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentCreditsTab.java53
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java33
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlAdapter.java83
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java40
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/BoardAdapter.java15
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java43
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/ActivityAdapter.java33
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentAdapter.java106
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentDialogFragment.java21
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java66
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAttachmentsFragment.java58
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java146
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardTabAdapter.java22
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CommentDialogFragment.java18
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java40
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/UserAutoCompleteAdapter.java42
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionActivity.java53
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/colorchooser/ColorChooser.java26
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/dnd/CrossTabDragAndDrop.java30
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java17
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java22
-rw-r--r--app/src/main/res/layout/activity_about.xml4
-rw-r--r--app/src/main/res/layout/fragment_card_edit_tab_activities.xml4
-rw-r--r--app/src/main/res/layout/fragment_card_edit_tab_attachments.xml2
29 files changed, 416 insertions, 757 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 5c0bd0976..0e3576fed 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -58,10 +58,6 @@ dependencies {
// --- UI-Libraries ---
// --------------------
- // Butterknife
- implementation 'com.jakewharton:butterknife:10.2.1'
- annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
-
// Glide
implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/AboutActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/AboutActivity.java
index a72cbe666..04ee232e3 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/AboutActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/AboutActivity.java
@@ -4,19 +4,13 @@ import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
-import androidx.viewpager.widget.ViewPager;
-import com.google.android.material.tabs.TabLayout;
-
-import butterknife.BindString;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.ActivityAboutBinding;
import it.niedermann.nextcloud.deck.ui.about.AboutFragmentContributingTab;
import it.niedermann.nextcloud.deck.ui.about.AboutFragmentCreditsTab;
import it.niedermann.nextcloud.deck.ui.about.AboutFragmentLicenseTab;
@@ -24,43 +18,30 @@ import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
public class AboutActivity extends AppCompatActivity {
- @BindView(R.id.toolbar)
- Toolbar toolbar;
- @BindView(R.id.pager)
- ViewPager mViewPager;
- @BindView(R.id.tabs)
- TabLayout mTabLayout;
-
- @BindString(R.string.about_credits_tab_title)
- String creditsTitle;
- @BindString(R.string.about_license_tab_title)
- String licenseTitle;
- @BindString(R.string.about_contribution_tab_title)
- String contributionTitle;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(Application.getAppTheme(this) ? R.style.DarkAppTheme : R.style.AppTheme);
super.onCreate(savedInstanceState);
Thread.currentThread().setUncaughtExceptionHandler(new ExceptionHandler(this));
- setContentView(R.layout.activity_about);
- ButterKnife.bind(this);
- setSupportActionBar(toolbar);
- mViewPager.setAdapter(new TabsPagerAdapter(getSupportFragmentManager()));
- mTabLayout.setupWithViewPager(mViewPager);
+ ActivityAboutBinding binding = ActivityAboutBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+
+ setSupportActionBar(binding.toolbar);
+ binding.viewPager.setAdapter(new TabsPagerAdapter(getSupportFragmentManager()));
+ binding.tabLayout.setupWithViewPager(binding.viewPager);
}
private class TabsPagerAdapter extends FragmentPagerAdapter {
- private final int PAGE_COUNT = 3;
+ @SuppressWarnings("WeakerAccess")
public TabsPagerAdapter(FragmentManager fragmentManager) {
- super(fragmentManager);
+ super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
}
@Override
public int getCount() {
- return PAGE_COUNT;
+ return 3;
}
/**
@@ -72,13 +53,10 @@ public class AboutActivity extends AppCompatActivity {
switch (position) {
case 0:
return new AboutFragmentCreditsTab();
-
case 1:
return new AboutFragmentContributingTab();
-
case 2:
return new AboutFragmentLicenseTab();
-
default:
throw new IllegalArgumentException("position must be between 0 and 2");
}
@@ -91,14 +69,11 @@ public class AboutActivity extends AppCompatActivity {
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
- return creditsTitle;
-
+ return getString(R.string.about_credits_tab_title);
case 1:
- return contributionTitle;
-
+ return getString(R.string.about_contribution_tab_title);
case 2:
- return licenseTitle;
-
+ return getString(R.string.about_license_tab_title);
default:
throw new IllegalArgumentException("position must be between 0 and 2");
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java
index 551da3466..98836e833 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java
@@ -11,17 +11,12 @@ import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
-import android.widget.EditText;
import android.widget.SpinnerAdapter;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.AppCompatSpinner;
-import androidx.appcompat.widget.Toolbar;
-import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout;
-import com.google.android.material.textfield.TextInputLayout;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException;
import com.nextcloud.android.sso.helper.SingleAccountHelper;
@@ -31,13 +26,10 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
-import butterknife.BindString;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.Unbinder;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.ActivityEditBinding;
import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.Board;
import it.niedermann.nextcloud.deck.model.Card;
@@ -64,33 +56,9 @@ public class EditActivity extends AppCompatActivity implements
CommentDialogFragment.AddCommentListener,
AdapterView.OnItemSelectedListener {
- SyncManager syncManager;
-
- @BindView(R.id.toolbar)
- Toolbar toolbar;
- @BindView(R.id.titleTextInputLayout)
- TextInputLayout titleTextInputLayout;
- @BindView(R.id.title)
- EditText title;
- @BindView(R.id.selectBoardWrapper)
- View selectBoardWrapper;
- @BindView(R.id.boardSelector)
- AppCompatSpinner boardSelector;
- @BindView(R.id.tab_layout)
- TabLayout tabLayout;
- @BindView(R.id.pager)
- ViewPager pager;
-
- @BindString(R.string.shared_preference_last_board_for_account_)
- String sharedPreferencesLastBoardForAccount_;
- @BindString(R.string.shared_preference_last_stack_for_account_and_board_)
- String sharedPreferencesLastStackForAccountAndBoard_;
- @BindString(R.string.simple_add)
- String add;
- @BindString(R.string.edit)
- String edit;
-
- private Unbinder unbinder;
+ private ActivityEditBinding binding;
+
+ private SyncManager syncManager;
private FullCard originalCard;
private FullCard fullCard;
@@ -110,10 +78,10 @@ public class EditActivity extends AppCompatActivity implements
super.onCreate(savedInstanceState);
Thread.currentThread().setUncaughtExceptionHandler(new ExceptionHandler(this));
- setContentView(R.layout.activity_edit);
- unbinder = ButterKnife.bind(this);
+ binding = ActivityEditBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
- setSupportActionBar(toolbar);
+ setSupportActionBar(binding.toolbar);
Bundle extras = getIntent().getExtras();
if (extras == null) {
@@ -132,7 +100,7 @@ public class EditActivity extends AppCompatActivity implements
SingleSignOnAccount ssoa = SingleAccountHelper.getCurrentSingleSignOnAccount(this);
syncManager.readAccount(ssoa.name).observe(this, (Account account) -> {
accountId = account.getId();
- selectBoardWrapper.setVisibility(View.VISIBLE);
+ binding.selectBoardWrapper.setVisibility(View.VISIBLE);
syncManager.getBoards(account.getId()).observe(this, (List<Board> boardsList) -> {
for (Board board : boardsList) {
if (!board.isPermissionEdit()) {
@@ -142,19 +110,19 @@ public class EditActivity extends AppCompatActivity implements
Board[] boardsArray = new Board[boardsList.size()];
boardsArray = boardsList.toArray(boardsArray);
SpinnerAdapter adapter = new BoardAdapter(this, boardsArray);
- boardSelector.setAdapter(adapter);
+ binding.boardSelector.setAdapter(adapter);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
- long lastBoardId = sharedPreferences.getLong(sharedPreferencesLastBoardForAccount_ + accountId, 0L);
+ long lastBoardId = sharedPreferences.getLong(getString(R.string.shared_preference_last_board_for_account_) + accountId, 0L);
DeckLog.log("--- Read: shared_preference_last_board_for_account_" + account.getId() + " | " + lastBoardId);
if (lastBoardId != 0L) {
for (int i = 0; i < boardsArray.length; i++) {
if (boardsArray[i].getLocalId() == lastBoardId) {
- boardSelector.setSelection(i);
+ binding.boardSelector.setSelection(i);
}
}
}
- boardSelector.setOnItemSelectedListener(this);
+ binding.boardSelector.setOnItemSelectedListener(this);
});
});
} catch (NextcloudFilesAppAccountNotFoundException | NoCurrentAccountSelectedException e) {
@@ -234,29 +202,29 @@ public class EditActivity extends AppCompatActivity implements
}
private void setupViewPager() {
- tabLayout.removeAllTabs();
- tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
+ binding.tabLayout.removeAllTabs();
+ binding.tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
CardTabAdapter adapter = new CardTabAdapter(getSupportFragmentManager(), this, accountId, localId, boardId, canEdit);
- pager.setOffscreenPageLimit(2);
- pager.setAdapter(adapter);
- tabLayout.setupWithViewPager(pager);
+ binding.pager.setOffscreenPageLimit(2);
+ binding.pager.setAdapter(adapter);
+ binding.tabLayout.setupWithViewPager(binding.pager);
}
private void setupTitle(boolean createMode) {
- title.setText(fullCard.getCard().getTitle());
+ binding.title.setText(fullCard.getCard().getTitle());
if (canEdit) {
if (createMode) {
- title.requestFocus();
+ binding.title.requestFocus();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
if (fullCard.getCard().getTitle() != null) {
- title.setSelection(fullCard.getCard().getTitle().length());
+ binding.title.setSelection(fullCard.getCard().getTitle().length());
}
}
- titleTextInputLayout.setHint(createMode ? add : edit);
- title.addTextChangedListener(new TextWatcher() {
+ binding.titleTextInputLayout.setHint(getString(createMode ? R.string.simple_add : R.string.edit));
+ binding.title.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
- fullCard.getCard().setTitle(title.getText().toString());
+ fullCard.getCard().setTitle(binding.title.getText().toString());
}
@Override
@@ -268,23 +236,16 @@ public class EditActivity extends AppCompatActivity implements
}
});
} else {
- titleTextInputLayout.setHintEnabled(false);
- title.setEnabled(false);
+ binding.titleTextInputLayout.setHintEnabled(false);
+ binding.title.setEnabled(false);
}
}
@Override
- protected void onDestroy() {
- super.onDestroy();
- unbinder.unbind();
- }
-
- @Override
public void onDescriptionChanged(String description) {
this.fullCard.getCard().setDescription(description);
}
-
@Override
public void onUserAdded(User user) {
this.fullCard.getAssignedUsers().add(user);
@@ -336,12 +297,12 @@ public class EditActivity extends AppCompatActivity implements
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- boardId = ((Board) boardSelector.getItemAtPosition(position)).getLocalId();
+ boardId = ((Board) binding.boardSelector.getItemAtPosition(position)).getLocalId();
observeOnce(syncManager.getFullBoardById(accountId, boardId), EditActivity.this, (fullBoard -> {
canEdit = fullBoard.getBoard().isPermissionEdit();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
- long savedStackId = sharedPreferences.getLong(sharedPreferencesLastStackForAccountAndBoard_ + accountId + "_" + boardId, 0L);
+ long savedStackId = sharedPreferences.getLong(getString(R.string.shared_preference_last_stack_for_account_and_board_) + accountId + "_" + boardId, 0L);
DeckLog.log("--- Read: shared_preference_last_stack_for_account_and_board" + accountId + "_" + boardId + " | " + savedStackId);
if (savedStackId == 0L) {
observeOnce(syncManager.getStacksForBoard(accountId, boardId), EditActivity.this, (stacks -> {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/SettingsActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/SettingsActivity.java
index ee019853c..eeac3f496 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/SettingsActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/SettingsActivity.java
@@ -4,18 +4,14 @@ import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.ActivitySettingsBinding;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
import it.niedermann.nextcloud.deck.ui.settings.SettingsFragment;
public class SettingsActivity extends AppCompatActivity {
- @BindView(R.id.toolbar)
- Toolbar toolbar;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -23,10 +19,10 @@ public class SettingsActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
Thread.currentThread().setUncaughtExceptionHandler(new ExceptionHandler(this));
- setContentView(R.layout.activity_settings);
- ButterKnife.bind(this);
+ ActivitySettingsBinding binding = ActivitySettingsBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
- setSupportActionBar(toolbar);
+ setSupportActionBar(binding.toolbar);
setResult(RESULT_OK);
getFragmentManager().beginTransaction()
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentContributingTab.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentContributingTab.java
index 616158102..9454ce461 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentContributingTab.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentContributingTab.java
@@ -1,49 +1,37 @@
package it.niedermann.nextcloud.deck.ui.about;
-import android.content.res.Resources;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.FragmentAboutContributionTabBinding;
import it.niedermann.nextcloud.deck.util.LinkUtil;
public class AboutFragmentContributingTab extends Fragment {
- @BindView(R.id.about_source)
- TextView aboutSource;
- @BindView(R.id.about_issues)
- TextView aboutIssues;
- @BindView(R.id.about_translate)
- TextView aboutTranslate;
-
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View v = inflater.inflate(R.layout.fragment_about_contribution_tab, container, false);
- Resources resources = v.getResources();
- ButterKnife.bind(this, v);
- LinkUtil.setHtml(aboutSource,
- resources.getString(
+ FragmentAboutContributionTabBinding binding = FragmentAboutContributionTabBinding.inflate(inflater, container, false);
+ LinkUtil.setHtml(binding.aboutSource,
+ getString(
R.string.about_source,
- LinkUtil.makeLink(resources, R.string.url_source, R.string.url_source)
+ LinkUtil.makeLink(getResources(), R.string.url_source, R.string.url_source)
));
- LinkUtil.setHtml(aboutIssues,
- resources.getString(
+ LinkUtil.setHtml(binding.aboutIssues,
+ getString(
R.string.about_issues,
- LinkUtil.makeLink(resources, R.string.url_issues, R.string.url_issues)
+ LinkUtil.makeLink(getResources(), R.string.url_issues, R.string.url_issues)
));
- LinkUtil.setHtml(aboutTranslate,
- resources.getString(
+ LinkUtil.setHtml(binding.aboutTranslate,
+ getString(
R.string.about_translate,
- LinkUtil.makeLink(resources, R.string.url_translations, R.string.url_translations)
+ LinkUtil.makeLink(getResources(), R.string.url_translations, R.string.url_translations)
));
- return v;
+ return binding.getRoot();
}
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentCreditsTab.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentCreditsTab.java
index 5411e6b22..5fc55f10e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentCreditsTab.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentCreditsTab.java
@@ -11,18 +11,15 @@ import android.text.style.StyleSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
-import butterknife.BindString;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.BuildConfig;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.api.IResponseCallback;
+import it.niedermann.nextcloud.deck.databinding.FragmentAboutCreditsTabBinding;
import it.niedermann.nextcloud.deck.exceptions.OfflineException;
import it.niedermann.nextcloud.deck.model.ocs.Capabilities;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
@@ -33,66 +30,46 @@ public class AboutFragmentCreditsTab extends Fragment {
private static final int BACKGROUND_SYNC_NEVER_EXECUTED = -1;
- @BindView(R.id.about_version)
- TextView aboutVersion;
- @BindView(R.id.about_server_app_version)
- TextView aboutServerAppVersion;
- @BindView(R.id.about_maintainer)
- TextView aboutMaintainer;
- @BindView(R.id.about_translators)
- TextView aboutTranslators;
- @BindView(R.id.last_background_sync)
- TextView lastBackgroundSyncExecutionTime;
-
- @BindString(R.string.shared_preference_last_background_sync)
- String sharedPreferencesLastBackgroundSync;
- @BindString(R.string.pref_key_background_sync)
- String sharedPreferencesBackgroundSync;
- @BindString(R.string.pref_value_background_sync_off)
- String backgroundSyncOffValue;
- @BindString(R.string.you_are_currently_offline)
- String offlineText;
- @BindString(R.string.simple_disabled)
- String disabledText;
+ private FragmentAboutCreditsTabBinding binding;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View v = inflater.inflate(R.layout.fragment_about_credits_tab, container, false);
- ButterKnife.bind(this, v);
+ binding = FragmentAboutCreditsTabBinding.inflate(inflater, container, false);
// VERSIONS
- LinkUtil.setHtml(aboutVersion, getString(R.string.about_version, strong("v" + BuildConfig.VERSION_NAME)));
+ LinkUtil.setHtml(binding.aboutVersion, getString(R.string.about_version, strong("v" + BuildConfig.VERSION_NAME)));
SyncManager syncManager = new SyncManager(requireActivity());
try {
syncManager.getServerVersion(new IResponseCallback<Capabilities>(null) {
@Override
public void onResponse(Capabilities response) {
- requireActivity().runOnUiThread(() -> LinkUtil.setHtml(aboutServerAppVersion, strong("v" + response.getDeckVersion().toString())));
+ requireActivity().runOnUiThread(() -> LinkUtil.setHtml(binding.aboutServerAppVersion, strong("v" + response.getDeckVersion().toString())));
}
});
} catch (OfflineException e) {
- aboutServerAppVersion.setText(disabled(offlineText));
+ binding.aboutServerAppVersion.setText(disabled(getString(R.string.you_are_currently_offline)));
}
+ String backgroundSyncOffValue = getString(R.string.pref_value_background_sync_off);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext().getApplicationContext());
- String settingsBackgroundSync = sharedPreferences.getString(sharedPreferencesBackgroundSync, backgroundSyncOffValue);
- long lastBackgroundSync = sharedPreferences.getLong(sharedPreferencesLastBackgroundSync, BACKGROUND_SYNC_NEVER_EXECUTED);
+ String settingsBackgroundSync = sharedPreferences.getString(getString(R.string.pref_key_background_sync), backgroundSyncOffValue);
+ long lastBackgroundSync = sharedPreferences.getLong(getString(R.string.shared_preference_last_background_sync), BACKGROUND_SYNC_NEVER_EXECUTED);
// BACKGROUND SYNC
- lastBackgroundSyncExecutionTime.setText(
+ binding.lastBackgroundSync.setText(
lastBackgroundSync == BACKGROUND_SYNC_NEVER_EXECUTED || settingsBackgroundSync.equals(backgroundSyncOffValue)
- ? disabled(disabledText)
+ ? disabled(getString(R.string.simple_disabled))
: strong(DateUtil.getRelativeDateTimeString(getContext(), lastBackgroundSync))
);
- LinkUtil.setHtml(aboutMaintainer, LinkUtil.concatenateResources(v.getResources(),
+ LinkUtil.setHtml(binding.aboutMaintainer, LinkUtil.concatenateResources(getResources(),
R.string.anchor_start, R.string.url_maintainer, R.string.anchor_middle, R.string.about_maintainer, R.string.anchor_end));
- LinkUtil.setHtml(aboutTranslators,
- v.getResources().getString(R.string.about_translators_transifex, LinkUtil.concatenateResources(v.getResources(),
+ LinkUtil.setHtml(binding.aboutTranslators,
+ getString(R.string.about_translators_transifex, LinkUtil.concatenateResources(getResources(),
R.string.anchor_start, R.string.url_translations, R.string.anchor_middle, R.string.about_translators_transifex_label, R.string.anchor_end
)));
- return v;
+ return binding.getRoot();
}
private SpannableString strong(CharSequence text) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java
index 3ab1ea2b1..c313073e3 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java
@@ -7,43 +7,30 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
-import butterknife.BindString;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.OnClick;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.FragmentAboutLicenseTabBinding;
import it.niedermann.nextcloud.deck.util.LinkUtil;
public class AboutFragmentLicenseTab extends Fragment {
- @BindView(R.id.about_icons_disclaimer)
- TextView iconsDisclaimer;
- @BindView(R.id.about_app_license_button)
- Button appLicenseButton;
+ FragmentAboutLicenseTabBinding binding;
- @BindString(R.string.paragraph_start)
- String paragraphStart;
- @BindString(R.string.paragraph_end)
- String paragraphEnd;
-
- @OnClick(R.id.about_app_license_button)
- void openLicense() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.url_license))));
- }
+ private String paragraphStart;
+ private String paragraphEnd;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View v = inflater.inflate(R.layout.fragment_about_license_tab, container, false);
- ButterKnife.bind(this, v);
+ binding = FragmentAboutLicenseTabBinding.inflate(inflater, container, false);
Resources resources = getResources();
- LinkUtil.setHtml(iconsDisclaimer, paragraphStart, resources.getString(R.string.about_icons_disclaimer, getAppIconHint(resources), getMdiLink(resources)), paragraphEnd);
- return v;
+ paragraphStart = getString(R.string.paragraph_start);
+ paragraphEnd = getString(R.string.paragraph_end);
+ binding.aboutAppLicenseButton.setOnClickListener((v) -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.url_license)))));
+ LinkUtil.setHtml(binding.aboutIconsDisclaimer, paragraphStart, getString(R.string.about_icons_disclaimer, getAppIconHint(resources), getMdiLink(resources)), paragraphEnd);
+ return binding.getRoot();
}
private String getAppIconHint(Resources resources) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlAdapter.java
index 9c98a5d10..b851fa853 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlAdapter.java
@@ -1,17 +1,11 @@
package it.niedermann.nextcloud.deck.ui.board;
import android.content.Context;
-import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
-import android.view.View;
import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatImageButton;
-import androidx.appcompat.widget.SwitchCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
@@ -20,10 +14,9 @@ import com.nextcloud.android.sso.helper.SingleAccountHelper;
import java.util.List;
-import butterknife.BindDrawable;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.ItemAccessControlBinding;
+import it.niedermann.nextcloud.deck.databinding.ItemAccessControlOwnerBinding;
import it.niedermann.nextcloud.deck.model.AccessControl;
import it.niedermann.nextcloud.deck.model.enums.DBStatus;
import it.niedermann.nextcloud.deck.util.ViewUtil;
@@ -51,11 +44,11 @@ public class AccessControlAdapter extends RecyclerView.Adapter<RecyclerView.View
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == TYPE_HEADER) {
- View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_access_control_owner, parent, false);
- return new OwnerViewHolder(v);
+ ItemAccessControlOwnerBinding binding = ItemAccessControlOwnerBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
+ return new OwnerViewHolder(binding);
} else if (viewType == TYPE_ITEM) {
- View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_access_control, parent, false);
- return new AccessControlViewHolder(v);
+ ItemAccessControlBinding binding = ItemAccessControlBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
+ return new AccessControlViewHolder(binding);
}
throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly");
}
@@ -65,11 +58,11 @@ public class AccessControlAdapter extends RecyclerView.Adapter<RecyclerView.View
AccessControl ac = accessControls.get(position);
if (holder instanceof OwnerViewHolder) {
OwnerViewHolder ownerHolder = (OwnerViewHolder) holder;
- ownerHolder.owner.setText(ac.getUser().getDisplayname());
+ ownerHolder.binding.owner.setText(ac.getUser().getDisplayname());
if (context != null) {
try {
- ViewUtil.addAvatar(context, ownerHolder.avatar, SingleAccountHelper.getCurrentSingleSignOnAccount(context).url, ac.getUser().getUid(), R.drawable.ic_person_grey600_24dp);
+ ViewUtil.addAvatar(context, ownerHolder.binding.avatar, SingleAccountHelper.getCurrentSingleSignOnAccount(context).url, ac.getUser().getUid(), R.drawable.ic_person_grey600_24dp);
} catch (NextcloudFilesAppAccountNotFoundException | NoCurrentAccountSelectedException e) {
e.printStackTrace();
}
@@ -79,32 +72,32 @@ public class AccessControlAdapter extends RecyclerView.Adapter<RecyclerView.View
if (context != null) {
try {
- ViewUtil.addAvatar(context, acHolder.avatar, SingleAccountHelper.getCurrentSingleSignOnAccount(context).url, ac.getUser().getUid(), R.drawable.ic_person_grey600_24dp);
+ ViewUtil.addAvatar(context, acHolder.binding.avatar, SingleAccountHelper.getCurrentSingleSignOnAccount(context).url, ac.getUser().getUid(), R.drawable.ic_person_grey600_24dp);
} catch (NextcloudFilesAppAccountNotFoundException | NoCurrentAccountSelectedException e) {
e.printStackTrace();
}
}
- acHolder.username.setText(ac.getUser().getDisplayname());
- acHolder.username.setCompoundDrawables(null, null, ac.getStatus() == DBStatus.LOCAL_EDITED.getId() ? acHolder.syncIcon : null, null);
+ acHolder.binding.username.setText(ac.getUser().getDisplayname());
+ acHolder.binding.username.setCompoundDrawables(null, null, ac.getStatus() == DBStatus.LOCAL_EDITED.getId() ? context.getResources().getDrawable(R.drawable.ic_sync_blue_24dp) : null, null);
// TODO remove from list when deleted
- acHolder.deleteButton.setOnClickListener((v) -> accessControlChangedListener.deleteAccessControl(ac));
+ acHolder.binding.delete.setOnClickListener((v) -> accessControlChangedListener.deleteAccessControl(ac));
- acHolder.switchEdit.setChecked(ac.isPermissionEdit());
- acHolder.switchEdit.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ acHolder.binding.permissionEdit.setChecked(ac.isPermissionEdit());
+ acHolder.binding.permissionEdit.setOnCheckedChangeListener((buttonView, isChecked) -> {
ac.setPermissionEdit(isChecked);
accessControlChangedListener.updateAccessControl(ac);
});
- acHolder.switchManage.setChecked(ac.isPermissionManage());
- acHolder.switchManage.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ acHolder.binding.permissionManage.setChecked(ac.isPermissionManage());
+ acHolder.binding.permissionManage.setOnCheckedChangeListener((buttonView, isChecked) -> {
ac.setPermissionManage(isChecked);
accessControlChangedListener.updateAccessControl(ac);
- acHolder.username.setCompoundDrawables(null, null, null, null);
+ acHolder.binding.username.setCompoundDrawables(null, null, null, null);
});
- acHolder.switchShare.setChecked(ac.isPermissionShare());
- acHolder.switchShare.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ acHolder.binding.permissionShare.setChecked(ac.isPermissionShare());
+ acHolder.binding.permissionShare.setOnCheckedChangeListener((buttonView, isChecked) -> {
ac.setPermissionShare(isChecked);
accessControlChangedListener.updateAccessControl(ac);
});
@@ -122,36 +115,22 @@ public class AccessControlAdapter extends RecyclerView.Adapter<RecyclerView.View
}
static class AccessControlViewHolder extends RecyclerView.ViewHolder {
- @BindDrawable(R.drawable.ic_sync_blue_24dp)
- Drawable syncIcon;
- @BindView(R.id.avatar)
- ImageView avatar;
- @BindView(R.id.username)
- TextView username;
- @BindView(R.id.delete)
- AppCompatImageButton deleteButton;
- @BindView(R.id.permission_edit)
- SwitchCompat switchEdit;
- @BindView(R.id.permission_manage)
- SwitchCompat switchManage;
- @BindView(R.id.permission_share)
- SwitchCompat switchShare;
-
- private AccessControlViewHolder(View view) {
- super(view);
- ButterKnife.bind(this, view);
+ // @BindDrawable(R.drawable.ic_sync_blue_24dp)
+// Drawable syncIcon;
+ ItemAccessControlBinding binding;
+
+ private AccessControlViewHolder(ItemAccessControlBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
}
}
static class OwnerViewHolder extends RecyclerView.ViewHolder {
- @BindView(R.id.avatar)
- ImageView avatar;
- @BindView(R.id.owner)
- TextView owner;
-
- private OwnerViewHolder(View view) {
- super(view);
- ButterKnife.bind(this, view);
+ ItemAccessControlOwnerBinding binding;
+
+ private OwnerViewHolder(ItemAccessControlOwnerBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java
index 34c289772..78d4e8490 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/AccessControlDialogFragment.java
@@ -1,6 +1,5 @@
package it.niedermann.nextcloud.deck.ui.board;
-import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
@@ -13,22 +12,21 @@ import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
-import java.util.Objects;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.DialogBoardShareBinding;
import it.niedermann.nextcloud.deck.model.AccessControl;
import it.niedermann.nextcloud.deck.model.full.FullBoard;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.ui.card.UserAutoCompleteAdapter;
-import it.niedermann.nextcloud.deck.ui.widget.DelayedAutoCompleteTextView;
public class AccessControlDialogFragment extends DialogFragment implements
AccessControlAdapter.AccessControlChangedListener,
AdapterView.OnItemClickListener {
+ private DialogBoardShareBinding binding;
+
private static final String KEY_ACCOUNT_ID = "account_id";
private static final String KEY_BOARD_ID = "board_id";
@@ -36,12 +34,6 @@ public class AccessControlDialogFragment extends DialogFragment implements
private long boardId;
private SyncManager syncManager;
private UserAutoCompleteAdapter userAutoCompleteAdapter;
- private View view;
-
- @BindView(R.id.peopleList)
- RecyclerView peopleList;
- @BindView(R.id.people)
- DelayedAutoCompleteTextView people;
/**
* Use newInstance()-Method
@@ -53,36 +45,32 @@ public class AccessControlDialogFragment extends DialogFragment implements
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- Activity activity = requireActivity();
- View view = activity.getLayoutInflater().inflate(R.layout.dialog_board_share, null);
- ButterKnife.bind(this, view);
- boardId = Objects.requireNonNull(getArguments()).getLong(KEY_BOARD_ID);
- accountId = Objects.requireNonNull(getArguments()).getLong(KEY_ACCOUNT_ID);
+ binding = DialogBoardShareBinding.inflate(getLayoutInflater());
+ boardId = requireArguments().getLong(KEY_BOARD_ID);
+ accountId = requireArguments().getLong(KEY_ACCOUNT_ID);
- AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity, Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert);
+ AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext(), Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert);
if (boardId == 0L || accountId == 0L) {
throw new IllegalArgumentException("accountId and boardId must be provided");
} else {
- syncManager = new SyncManager(activity);
+ syncManager = new SyncManager(requireActivity());
syncManager.getFullBoardById(accountId, boardId).observe(this, (FullBoard fullBoard) -> {
syncManager.getAccessControlByLocalBoardId(accountId, boardId).observe(this, (List<AccessControl> accessControlList) -> {
AccessControl ownerControl = new AccessControl();
ownerControl.setUser(fullBoard.getOwner());
accessControlList.add(0, ownerControl);
RecyclerView.Adapter adapter = new AccessControlAdapter(accessControlList, this, getContext());
- peopleList.setAdapter(adapter);
- userAutoCompleteAdapter = new UserAutoCompleteAdapter(this, activity, accountId, boardId);
- people.setAdapter(userAutoCompleteAdapter);
- people.setOnItemClickListener(this);
+ binding.peopleList.setAdapter(adapter);
+ userAutoCompleteAdapter = new UserAutoCompleteAdapter(this, requireActivity(), accountId, boardId);
+ binding.people.setAdapter(userAutoCompleteAdapter);
+ binding.people.setOnItemClickListener(this);
});
});
}
- this.view = view;
-
return dialogBuilder
- .setView(view)
+ .setView(binding.getRoot())
.setPositiveButton(R.string.simple_close, null)
.create();
}
@@ -118,6 +106,6 @@ public class AccessControlDialogFragment extends DialogFragment implements
ac.setUserId(userAutoCompleteAdapter.getItem(position).getLocalId());
ac.setUser(userAutoCompleteAdapter.getItem(position));
syncManager.createAccessControl(accountId, ac);
- people.setText("");
+ binding.people.setText("");
}
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/BoardAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/BoardAdapter.java
index 986ce9237..575d33e64 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/BoardAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/BoardAdapter.java
@@ -9,10 +9,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.RecyclerView;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.model.Board;
@@ -39,7 +36,7 @@ public class BoardAdapter extends ArrayAdapter<Board> {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_board, parent, false);
}
TextView boardName = convertView.findViewById(R.id.boardName);
- if(board != null) {
+ if (board != null) {
boardName.setText(board.getTitle());
boardName.setCompoundDrawables(ViewUtil.getTintedImageView(context, R.drawable.circle_grey600_36dp, "#" + board.getColor()), null, null, null);
} else {
@@ -53,14 +50,4 @@ public class BoardAdapter extends ArrayAdapter<Board> {
return getView(position, convertView, parent);
}
- static class BoardViewHolder extends RecyclerView.ViewHolder {
- @BindView(R.id.boardName)
- TextView boardName;
-
- private BoardViewHolder(View view) {
- super(view);
- ButterKnife.bind(this, view);
- }
- }
-
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java
index f529ced63..d12389d21 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java
@@ -1,11 +1,8 @@
package it.niedermann.nextcloud.deck.ui.board;
-import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
-import android.view.View;
-import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
@@ -13,17 +10,16 @@ import androidx.fragment.app.DialogFragment;
import java.util.Objects;
-import butterknife.BindColor;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.DialogBoardCreateBinding;
import it.niedermann.nextcloud.deck.model.full.FullBoard;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
-import it.niedermann.nextcloud.deck.ui.helper.colorchooser.ColorChooser;
public class EditBoardDialogFragment extends DialogFragment {
+ private DialogBoardCreateBinding binding;
+
private static final String KEY_ACCOUNT_ID = "account_id";
private static final String KEY_BOARD_ID = "board_id";
private static final Long NO_BOARD_ID = -1L;
@@ -32,14 +28,6 @@ public class EditBoardDialogFragment extends DialogFragment {
private FullBoard fullBoard = null;
- @BindView(R.id.input)
- EditText boardTitle;
- @BindView(R.id.colorChooser)
- ColorChooser colorChooser;
-
- @BindColor(R.color.board_default_color)
- int boardDefaultColor;
-
/**
* Use newInstance()-Method
*/
@@ -60,37 +48,36 @@ public class EditBoardDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- Activity activity = requireActivity();
- View view = activity.getLayoutInflater().inflate(R.layout.dialog_board_create, null);
- ButterKnife.bind(this, view);
+ binding = DialogBoardCreateBinding.inflate(getLayoutInflater());
+
Long boardId = Objects.requireNonNull(getArguments()).getLong(KEY_BOARD_ID);
- AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity, Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert);
+ AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext(), Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert);
if (NO_BOARD_ID.equals(boardId)) {
dialogBuilder.setTitle(R.string.add_board);
- dialogBuilder.setPositiveButton(R.string.simple_add, (dialog, which) -> editBoardListener.onCreateBoard(boardTitle.getText().toString(), colorChooser.getSelectedColor()));
- this.colorChooser.selectColor(String.format("#%06X", 0xFFFFFF & boardDefaultColor));
+ dialogBuilder.setPositiveButton(R.string.simple_add, (dialog, which) -> editBoardListener.onCreateBoard(binding.input.getText().toString(), binding.colorChooser.getSelectedColor()));
+ binding.colorChooser.selectColor(String.format("#%06X", 0xFFFFFF & getResources().getColor(R.color.board_default_color)));
} else {
dialogBuilder.setTitle(R.string.edit_board);
dialogBuilder.setPositiveButton(R.string.simple_save, (dialog, which) -> {
- this.fullBoard.board.setColor(colorChooser.getSelectedColor().substring(1));
- this.fullBoard.board.setTitle(this.boardTitle.getText().toString());
+ this.fullBoard.board.setColor(binding.colorChooser.getSelectedColor().substring(1));
+ this.fullBoard.board.setTitle(binding.input.getText().toString());
editBoardListener.onUpdateBoard(fullBoard);
});
- new SyncManager(activity).getFullBoardById(Objects.requireNonNull(getArguments()).getLong(KEY_ACCOUNT_ID), boardId).observe(EditBoardDialogFragment.this, (FullBoard fb) -> {
+ new SyncManager(requireActivity()).getFullBoardById(Objects.requireNonNull(getArguments()).getLong(KEY_ACCOUNT_ID), boardId).observe(EditBoardDialogFragment.this, (FullBoard fb) -> {
if (fb.board != null) {
this.fullBoard = fb;
String title = this.fullBoard.getBoard().getTitle();
- this.boardTitle.setText(title);
- this.boardTitle.setSelection(title.length());
- this.colorChooser.selectColor("#" + fullBoard.getBoard().getColor());
+ binding.input.setText(title);
+ binding.input.setSelection(title.length());
+ binding.colorChooser.selectColor("#" + fullBoard.getBoard().getColor());
}
});
}
return dialogBuilder
- .setView(view)
+ .setView(binding.getRoot())
.setNegativeButton(android.R.string.cancel, null)
.create();
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/ActivityAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/ActivityAdapter.java
index 16bc1a9c8..96b05577b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/ActivityAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/ActivityAdapter.java
@@ -2,19 +2,15 @@ package it.niedermann.nextcloud.deck.ui.card;
import android.content.Context;
import android.view.LayoutInflater;
-import android.view.View;
import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.ItemActivityBinding;
import it.niedermann.nextcloud.deck.model.enums.ActivityType;
import it.niedermann.nextcloud.deck.model.ocs.Activity;
import it.niedermann.nextcloud.deck.util.DateUtil;
@@ -34,26 +30,26 @@ public class ActivityAdapter extends RecyclerView.Adapter<ActivityAdapter.Activi
@Override
public ActivitiesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
this.context = parent.getContext();
- View v = LayoutInflater.from(context).inflate(R.layout.item_activity, parent, false);
- return new ActivitiesViewHolder(v);
+ ItemActivityBinding binding = ItemActivityBinding.inflate(LayoutInflater.from(context), parent, false);
+ return new ActivitiesViewHolder(binding);
}
@Override
public void onBindViewHolder(@NonNull ActivitiesViewHolder holder, int position) {
Activity activity = activities.get(position);
- holder.date.setText(DateUtil.getRelativeDateTimeString(context, activity.getLastModified().getTime()));
- holder.subject.setText(activity.getSubject());
+ holder.binding.date.setText(DateUtil.getRelativeDateTimeString(context, activity.getLastModified().getTime()));
+ holder.binding.subject.setText(activity.getSubject());
switch (ActivityType.findById(activity.getType())) {
case DECK:
break;
case CHANGE:
- holder.type.setImageResource(R.drawable.type_change_36dp);
+ holder.binding.type.setImageResource(R.drawable.type_change_36dp);
break;
case ADD:
- holder.type.setImageResource(R.drawable.type_add_color_36dp);
+ holder.binding.type.setImageResource(R.drawable.type_add_color_36dp);
break;
case DELETE:
- holder.type.setImageResource(R.drawable.type_delete_color_36dp);
+ holder.binding.type.setImageResource(R.drawable.type_delete_color_36dp);
break;
case ARCHIVE:
break;
@@ -72,16 +68,11 @@ public class ActivityAdapter extends RecyclerView.Adapter<ActivityAdapter.Activi
}
static class ActivitiesViewHolder extends RecyclerView.ViewHolder {
- @BindView(R.id.date)
- TextView date;
- @BindView(R.id.subject)
- TextView subject;
- @BindView(R.id.type)
- ImageView type;
+ ItemActivityBinding binding;
- private ActivitiesViewHolder(View view) {
- super(view);
- ButterKnife.bind(this, view);
+ private ActivitiesViewHolder(ItemActivityBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentAdapter.java
index c6f229de9..66610543b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentAdapter.java
@@ -11,12 +11,11 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.TextView;
+import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.AppCompatImageView;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -24,9 +23,9 @@ import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import java.util.List;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.R;
+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;
@@ -64,10 +63,10 @@ public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentAdapter.At
//noinspection SwitchStatementWithTooFewBranches
switch (viewType) {
case VIEW_TYPE_IMAGE: {
- return new ImageAttachmentViewHolder(LayoutInflater.from(context).inflate(R.layout.item_attachment_image, parent, false));
+ return new ImageAttachmentViewHolder(ItemAttachmentImageBinding.inflate(LayoutInflater.from(context), parent, false));
}
default: {
- return new DefaultAttachmentViewHolder(LayoutInflater.from(context).inflate(R.layout.item_attachment_default, parent, false));
+ return new DefaultAttachmentViewHolder(ItemAttachmentDefaultBinding.inflate(LayoutInflater.from(context), parent, false));
}
}
}
@@ -77,8 +76,8 @@ public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentAdapter.At
Attachment attachment = attachments.get(position);
int viewType = getItemViewType(position);
String uri = account.getUrl() + "/index.php/apps/deck/cards/" + cardRemoteId + "/attachment/" + attachment.getId();
- holder.notSyncedYet.setVisibility(attachment.getStatusEnum() == DBStatus.UP_TO_DATE ? View.GONE : View.VISIBLE);
- holder.preview.getRootView().setOnCreateContextMenuListener((menu, v, menuInfo) -> {
+ holder.setNotSyncedYetStatus(attachment.getStatusEnum() == DBStatus.UP_TO_DATE);
+ holder.getRootView().setOnCreateContextMenuListener((menu, v, menuInfo) -> {
((Activity) context).getMenuInflater().inflate(R.menu.attachment_menu, menu);
menu.findItem(R.id.delete).setOnMenuItemClickListener(item -> {
new DeleteDialogBuilder(context)
@@ -109,13 +108,13 @@ public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentAdapter.At
.load(uri)
.transform(new CenterCrop())
.error(R.drawable.ic_image_grey600_24dp)
- .into(holder.preview);
- holder.preview.setImageResource(R.drawable.ic_image_grey600_24dp);
- holder.preview.getRootView().setOnClickListener((v) -> AttachmentDialogFragment.newInstance(uri, attachment.getBasename()).show(((AppCompatActivity) context).getSupportFragmentManager(), "preview"));
+ .into(holder.getPreview());
+ holder.getPreview().setImageResource(R.drawable.ic_image_grey600_24dp);
+ holder.getPreview().getRootView().setOnClickListener((v) -> AttachmentDialogFragment.newInstance(uri, attachment.getBasename()).show(((AppCompatActivity) context).getSupportFragmentManager(), "preview"));
} else if (attachment.getMimetype().startsWith("audio")) {
- holder.preview.setImageResource(R.drawable.ic_music_note_grey600_24dp);
+ holder.getPreview().setImageResource(R.drawable.ic_music_note_grey600_24dp);
} else if (attachment.getMimetype().startsWith("video")) {
- holder.preview.setImageResource(R.drawable.ic_local_movies_grey600_24dp);
+ holder.getPreview().setImageResource(R.drawable.ic_local_movies_grey600_24dp);
}
}
@@ -127,21 +126,21 @@ public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentAdapter.At
}
default: {
DefaultAttachmentViewHolder defaultHolder = (DefaultAttachmentViewHolder) holder;
- defaultHolder.filename.getRootView().setOnClickListener((event) -> {
+ defaultHolder.binding.filename.getRootView().setOnClickListener((event) -> {
Intent openURL = new Intent(android.content.Intent.ACTION_VIEW);
openURL.setData(Uri.parse(account.getUrl() + "/index.php/apps/deck/cards/" + cardRemoteId + "/attachment/" + attachment.getId()));
context.startActivity(openURL);
});
- defaultHolder.filename.setText(attachment.getBasename());
- defaultHolder.filesize.setText(Formatter.formatFileSize(context, attachment.getFilesize()));
+ defaultHolder.binding.filename.setText(attachment.getBasename());
+ defaultHolder.binding.filesize.setText(Formatter.formatFileSize(context, attachment.getFilesize()));
if (attachment.getLastModifiedLocal() != null) {
- defaultHolder.modified.setText(DateUtil.getRelativeDateTimeString(context, attachment.getLastModifiedLocal().getTime()));
- defaultHolder.modified.setVisibility(View.VISIBLE);
+ defaultHolder.binding.modified.setText(DateUtil.getRelativeDateTimeString(context, attachment.getLastModifiedLocal().getTime()));
+ defaultHolder.binding.modified.setVisibility(View.VISIBLE);
} else if (attachment.getLastModified() != null) {
- defaultHolder.modified.setText(DateUtil.getRelativeDateTimeString(context, attachment.getLastModified().getTime()));
- defaultHolder.modified.setVisibility(View.VISIBLE);
+ defaultHolder.binding.modified.setText(DateUtil.getRelativeDateTimeString(context, attachment.getLastModified().getTime()));
+ defaultHolder.binding.modified.setVisibility(View.VISIBLE);
} else {
- defaultHolder.modified.setVisibility(View.GONE);
+ defaultHolder.binding.modified.setVisibility(View.GONE);
}
break;
}
@@ -159,36 +158,63 @@ public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentAdapter.At
return attachments.size();
}
- static class AttachmentViewHolder extends RecyclerView.ViewHolder {
- @BindView(R.id.preview)
- AppCompatImageView preview;
- @BindView(R.id.not_synced_yet)
- AppCompatImageView notSyncedYet;
-
+ static abstract class AttachmentViewHolder extends RecyclerView.ViewHolder {
AttachmentViewHolder(@NonNull View itemView) {
super(itemView);
}
+
+ abstract View getRootView();
+
+ abstract ImageView getPreview();
+
+ abstract void setNotSyncedYetStatus(boolean synced);
}
static class DefaultAttachmentViewHolder extends AttachmentViewHolder {
- @BindView(R.id.filename)
- TextView filename;
- @BindView(R.id.filesize)
- TextView filesize;
- @BindView(R.id.modified)
- TextView modified;
-
- private DefaultAttachmentViewHolder(View view) {
- super(view);
- ButterKnife.bind(this, view);
+ ItemAttachmentDefaultBinding binding;
+
+ private DefaultAttachmentViewHolder(ItemAttachmentDefaultBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ @Override
+ View getRootView() {
+ return binding.getRoot();
+ }
+
+ @Override
+ ImageView getPreview() {
+ return binding.preview;
+ }
+
+ @Override
+ void setNotSyncedYetStatus(boolean synced) {
+ binding.notSyncedYet.setVisibility(synced ? View.GONE : View.VISIBLE);
}
}
static class ImageAttachmentViewHolder extends AttachmentViewHolder {
+ ItemAttachmentImageBinding binding;
+
+ private ImageAttachmentViewHolder(ItemAttachmentImageBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ @Override
+ View getRootView() {
+ return binding.getRoot();
+ }
+
+ @Override
+ ImageView getPreview() {
+ return binding.preview;
+ }
- private ImageAttachmentViewHolder(View view) {
- super(view);
- ButterKnife.bind(this, view);
+ @Override
+ void setNotSyncedYetStatus(boolean synced) {
+ binding.notSyncedYet.setVisibility(synced ? View.GONE : View.VISIBLE);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentDialogFragment.java
index 9af253e20..eb57b30a4 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AttachmentDialogFragment.java
@@ -7,7 +7,6 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -18,22 +17,15 @@ import com.bumptech.glide.Glide;
import java.util.Objects;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.DialogAttachmentBinding;
public class AttachmentDialogFragment extends DialogFragment {
private static final String BUNDLE_KEY_URL = "url";
private static final String BUNDLE_KEY_ALT = "alt";
- @BindView(R.id.image)
- ImageView image;
-
-// @BindView(R.id.progressBar)
-// ProgressBar progressBar;
-
/**
* Use newInstance()-Method
*/
@@ -43,8 +35,7 @@ public class AttachmentDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- View view = requireActivity().getLayoutInflater().inflate(R.layout.dialog_attachment, null);
- ButterKnife.bind(this, view);
+ it.niedermann.nextcloud.deck.databinding.DialogAttachmentBinding binding = DialogAttachmentBinding.inflate(getLayoutInflater());
Glide.with(this)
// .addDefaultRequestListener(new RequestListener<Object>() {
@@ -63,12 +54,12 @@ public class AttachmentDialogFragment extends DialogFragment {
// }
// })
.load(requireArguments().getString(BUNDLE_KEY_URL))
- .into(image);
- image.setContentDescription(requireArguments().getString(BUNDLE_KEY_ALT));
- image.getRootView().setOnClickListener((v) -> dismiss());
+ .into(binding.image);
+ binding.image.setContentDescription(requireArguments().getString(BUNDLE_KEY_ALT));
+ binding.image.getRootView().setOnClickListener((v) -> dismiss());
return new AlertDialog.Builder(requireActivity(), Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert)
- .setView(view)
+ .setView(binding.getRoot())
.create();
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java
index 9b1412be9..c2bcad532 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java
@@ -7,22 +7,13 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
-import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
-import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
-import java.util.Objects;
-
-import butterknife.BindString;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.Unbinder;
-import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.FragmentCardEditTabActivitiesBinding;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
-import it.niedermann.nextcloud.deck.ui.helper.emptycontentview.EmptyContentView;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT_ID;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_BOARD_ID;
@@ -30,18 +21,9 @@ import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_CAN_ED
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_LOCAL_ID;
public class CardActivityFragment extends Fragment {
- private Unbinder unbinder;
-
- @BindString(R.string.simple_comment)
- String addComment;
- @BindView(R.id.coordinatorLayout)
- CoordinatorLayout coordinatorLayout;
- @BindView(R.id.fab)
- FloatingActionButton fab;
- @BindView(R.id.activity_list)
- RecyclerView activitiesList;
- @BindView(R.id.no_activities)
- EmptyContentView emptyContentView;
+
+
+ private FragmentCardEditTabActivitiesBinding binding;
public CardActivityFragment() {
}
@@ -71,9 +53,7 @@ public class CardActivityFragment extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
-
- View view = inflater.inflate(R.layout.fragment_card_edit_tab_activities, container, false);
- unbinder = ButterKnife.bind(this, view);
+ binding = FragmentCardEditTabActivitiesBinding.inflate(inflater, container, false);
Bundle args = getArguments();
if (args != null) {
@@ -82,44 +62,38 @@ public class CardActivityFragment extends Fragment {
boolean canEdit = args.getBoolean(BUNDLE_KEY_CAN_EDIT);
SyncManager syncManager = new SyncManager(requireActivity());
- syncManager.getCardByLocalId(accountId, localId).observe(CardActivityFragment.this, (fullCard) -> {
- syncManager.syncActivitiesForCard(fullCard.getCard()).observe(CardActivityFragment.this, (activities -> {
+ syncManager.getCardByLocalId(accountId, localId).observe(getViewLifecycleOwner(), (fullCard) -> {
+ syncManager.syncActivitiesForCard(fullCard.getCard()).observe(getViewLifecycleOwner(), (activities -> {
if (activities == null || activities.size() == 0) {
- emptyContentView.setVisibility(View.VISIBLE);
- activitiesList.setVisibility(View.GONE);
+ binding.emptyContentView.setVisibility(View.VISIBLE);
+ binding.activitiesList.setVisibility(View.GONE);
} else {
- emptyContentView.setVisibility(View.GONE);
- activitiesList.setVisibility(View.VISIBLE);
+ binding.emptyContentView.setVisibility(View.GONE);
+ binding.activitiesList.setVisibility(View.VISIBLE);
RecyclerView.Adapter adapter = new ActivityAdapter(activities);
- activitiesList.setAdapter(adapter);
+ binding.activitiesList.setAdapter(adapter);
}
}));
});
if (canEdit) {
- fab.setOnClickListener(v -> {
- Snackbar.make(coordinatorLayout, "Adding comments is not yet implemented", Snackbar.LENGTH_LONG).show();
+ binding.fab.setOnClickListener(v -> {
+ Snackbar.make(binding.coordinatorLayout, "Adding comments is not yet implemented", Snackbar.LENGTH_LONG).show();
// CommentDialogFragment.newInstance().show(getActivity().getSupportFragmentManager(), addComment);
});
- activitiesList.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ binding.activitiesList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
if (dy > 0)
- fab.hide();
+ binding.fab.hide();
else if (dy < 0)
- fab.show();
+ binding.fab.show();
}
});
} else {
- emptyContentView.hideDescription();
- fab.hide();
+ binding.emptyContentView.hideDescription();
+ binding.fab.hide();
}
}
- return view;
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- unbinder.unbind();
+ return binding.getRoot();
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAttachmentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAttachmentsFragment.java
index 563b8ce2c..a8a126b67 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAttachmentsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAttachmentsFragment.java
@@ -14,23 +14,16 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
-import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
-import com.google.android.material.floatingactionbutton.FloatingActionButton;
-
import java.io.File;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.Unbinder;
-import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.FragmentCardEditTabAttachmentsBinding;
import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.Attachment;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
-import it.niedermann.nextcloud.deck.ui.helper.emptycontentview.EmptyContentView;
import it.niedermann.nextcloud.deck.util.FileUtils;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT_ID;
@@ -39,9 +32,10 @@ import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_CAN_ED
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_LOCAL_ID;
public class CardAttachmentsFragment extends Fragment implements AttachmentAdapter.AttachmentDeletedListener {
- private Unbinder unbinder;
private static final String TAG = CardAttachmentsFragment.class.getCanonicalName();
+ private FragmentCardEditTabAttachmentsBinding binding;
+
private static final int REQUEST_CODE_ADD_ATTACHMENT = 1;
private static final int REQUEST_PERMISSION = 2;
@@ -50,22 +44,12 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentAdapt
private long accountId;
private long cardId;
- @BindView(R.id.coordinatorLayout)
- CoordinatorLayout coordinatorLayout;
- @BindView(R.id.fab)
- FloatingActionButton fab;
- @BindView(R.id.attachments_list)
- RecyclerView attachmentsList;
- @BindView(R.id.no_attachments)
- EmptyContentView emptyContentView;
-
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_card_edit_tab_attachments, container, false);
- unbinder = ButterKnife.bind(this, view);
+ binding = FragmentCardEditTabAttachmentsBinding.inflate(inflater, container, false);
Bundle args = getArguments();
if (args != null) {
@@ -76,14 +60,14 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentAdapt
syncManager = new SyncManager(requireActivity());
syncManager.getCardByLocalId(accountId, cardId).observe(getViewLifecycleOwner(), (fullCard) -> {
if (fullCard.getAttachments().size() == 0) {
- this.emptyContentView.setVisibility(View.VISIBLE);
- this.attachmentsList.setVisibility(View.GONE);
+ this.binding.emptyContentView.setVisibility(View.VISIBLE);
+ this.binding.attachmentsList.setVisibility(View.GONE);
} else {
- this.emptyContentView.setVisibility(View.GONE);
- this.attachmentsList.setVisibility(View.VISIBLE);
+ this.binding.emptyContentView.setVisibility(View.GONE);
+ this.binding.attachmentsList.setVisibility(View.VISIBLE);
syncManager.readAccount(accountId).observe(getViewLifecycleOwner(), (Account account) -> {
RecyclerView.Adapter adapter = new AttachmentAdapter(this, account, fullCard.getCard().getId(), fullCard.getAttachments());
- attachmentsList.setAdapter(adapter);
+ binding.attachmentsList.setAdapter(adapter);
GridLayoutManager glm = new GridLayoutManager(getActivity(), 3);
glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@@ -99,13 +83,13 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentAdapt
}
}
});
- attachmentsList.setLayoutManager(glm);
+ binding.attachmentsList.setLayoutManager(glm);
});
}
});
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT && canEdit) {
- fab.setOnClickListener(v -> {
+ binding.fab.setOnClickListener(v -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_PERMISSION);
@@ -113,24 +97,24 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentAdapt
startFilePickerIntent();
}
});
- fab.show();
- attachmentsList.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ binding.fab.show();
+ binding.attachmentsList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
if (dy > 0)
- fab.hide();
+ binding.fab.hide();
else if (dy < 0)
- fab.show();
+ binding.fab.show();
}
});
} else {
- fab.hide();
- emptyContentView.hideDescription();
+ binding.fab.hide();
+ binding.emptyContentView.hideDescription();
}
}
- return view;
+ return binding.getRoot();
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@@ -186,12 +170,6 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentAdapt
}
@Override
- public void onDestroy() {
- super.onDestroy();
- unbinder.unbind();
- }
-
- @Override
public void onAttachmentDeleted(Attachment attachment) {
syncManager.deleteAttachmentOfCard(accountId, cardId, attachment.getLocalId());
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java
index 65c4c4169..c6f5434f6 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardDetailsFragment.java
@@ -17,7 +17,6 @@ import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import android.widget.TextView;
import android.widget.TimePicker;
import androidx.annotation.NonNull;
@@ -27,11 +26,9 @@ import androidx.core.graphics.drawable.DrawableCompat;
import androidx.fragment.app.Fragment;
import com.google.android.material.chip.Chip;
-import com.google.android.material.chip.ChipGroup;
import com.google.android.material.snackbar.Snackbar;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException;
-import com.yydcdut.markdown.MarkdownEditText;
import com.yydcdut.markdown.MarkdownProcessor;
import com.yydcdut.markdown.syntax.edit.EditFactory;
@@ -42,18 +39,14 @@ import java.util.Date;
import java.util.Locale;
import java.util.Objects;
-import butterknife.BindDrawable;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.Unbinder;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.FragmentCardEditTabDetailsBinding;
import it.niedermann.nextcloud.deck.model.Card;
import it.niedermann.nextcloud.deck.model.Label;
import it.niedermann.nextcloud.deck.model.User;
import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
-import it.niedermann.nextcloud.deck.ui.widget.DelayedAutoCompleteTextView;
import it.niedermann.nextcloud.deck.util.ColorUtil;
import it.niedermann.nextcloud.deck.util.DimensionUtil;
import it.niedermann.nextcloud.deck.util.MarkDownUtil;
@@ -68,8 +61,11 @@ import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.NO_LOCAL_ID;
public class CardDetailsFragment extends Fragment implements DatePickerDialog.OnDateSetListener,
TimePickerDialog.OnTimeSetListener {
+
private static final String TAG = CardDetailsFragment.class.getCanonicalName();
+ private FragmentCardEditTabDetailsBinding binding;
+
private boolean canEdit = false;
private FullCard fullCard;
private SyncManager syncManager;
@@ -78,30 +74,9 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
private String baseUrl;
private int avatarSize;
private LinearLayout.LayoutParams avatarLayoutParams;
- private Unbinder unbinder;
private CardDetailsListener cardDetailsListener;
private Activity activity;
- @BindView(R.id.description)
- MarkdownEditText description;
- @BindView(R.id.people)
- DelayedAutoCompleteTextView people;
- @BindView(R.id.labels)
- DelayedAutoCompleteTextView labels;
- @BindView(R.id.peopleList)
- LinearLayout peopleList;
- @BindView(R.id.dueDateDate)
- TextView dueDate;
- @BindView(R.id.dueDateTime)
- TextView dueDateTime;
- @BindView(R.id.clearDueDate)
- ImageView clearDueDate;
- @BindView(R.id.labelsGroup)
- ChipGroup labelsGroup;
-
- @BindDrawable(R.drawable.ic_close_circle_grey600)
- Drawable closeCircleDrawable;
-
public CardDetailsFragment() {
}
@@ -137,8 +112,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_card_edit_tab_details, container, false);
- unbinder = ButterKnife.bind(this, view);
+ binding = FragmentCardEditTabDetailsBinding.inflate(inflater, container, false);
dateFormat = android.text.format.DateFormat.getDateFormat(activity);
Bundle args = getArguments();
@@ -159,7 +133,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
} else {
observeOnce(syncManager.getCardByLocalId(accountId, localId), CardDetailsFragment.this, (next) -> {
fullCard = next;
- description.setText(fullCard.getCard().getDescription());
+ binding.description.setText(fullCard.getCard().getDescription());
setupView(accountId, boardId, canEdit);
});
}
@@ -175,7 +149,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
DeckLog.logError(e);
}
- return view;
+ return binding.getRoot();
}
private void setupView(long accountId, long boardId, boolean canEdit) {
@@ -188,15 +162,15 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
private void setupDescription() {
if (canEdit) {
MarkdownProcessor markdownProcessor = new MarkdownProcessor(requireContext());
- markdownProcessor.config(MarkDownUtil.getMarkDownConfiguration(description.getContext()).build());
+ markdownProcessor.config(MarkDownUtil.getMarkDownConfiguration(binding.description.getContext()).build());
markdownProcessor.factory(EditFactory.create());
- markdownProcessor.live(description);
- description.addTextChangedListener(new TextWatcher() {
+ markdownProcessor.live(binding.description);
+ binding.description.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (fullCard != null) {
- cardDetailsListener.onDescriptionChanged(description.getText().toString());
- fullCard.getCard().setDescription(description.getText().toString());
+ cardDetailsListener.onDescriptionChanged(binding.description.getText().toString());
+ fullCard.getCard().setDescription(binding.description.getText().toString());
}
}
@@ -209,7 +183,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
});
} else {
- description.setEnabled(false);
+ binding.description.setEnabled(false);
}
}
@@ -253,18 +227,18 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
private void setupDueDate() {
if (this.fullCard.getCard().getDueDate() != null) {
- dueDate.setText(dateFormat.format(this.fullCard.getCard().getDueDate()));
- dueDateTime.setText(dueTime.format(this.fullCard.getCard().getDueDate()));
- clearDueDate.setVisibility(View.VISIBLE);
+ binding.dueDateDate.setText(dateFormat.format(this.fullCard.getCard().getDueDate()));
+ binding.dueDateTime.setText(dueTime.format(this.fullCard.getCard().getDueDate()));
+ binding.clearDueDate.setVisibility(View.VISIBLE);
} else {
- clearDueDate.setVisibility(View.GONE);
- dueDate.setText(null);
- dueDateTime.setText(null);
+ binding.clearDueDate.setVisibility(View.GONE);
+ binding.dueDateDate.setText(null);
+ binding.dueDateTime.setText(null);
}
if (canEdit) {
- dueDate.setOnClickListener(v -> {
+ binding.dueDateDate.setOnClickListener(v -> {
if (fullCard != null && fullCard.getCard() != null) {
createDatePickerDialogFromDate(activity, this, fullCard.getCard().getDueDate()).show();
} else {
@@ -272,7 +246,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
});
- dueDateTime.setOnClickListener(v -> {
+ binding.dueDateTime.setOnClickListener(v -> {
if (fullCard != null && fullCard.getCard() != null) {
createTimePickerDialogFromDate(activity, this, fullCard.getCard().getDueDate()).show();
} else {
@@ -280,56 +254,56 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
});
- clearDueDate.setOnClickListener(v -> {
+ binding.clearDueDate.setOnClickListener(v -> {
cardDetailsListener.onDueDateChanged(null);
- dueDate.setText(null);
- dueDateTime.setText(null);
+ binding.dueDateDate.setText(null);
+ binding.dueDateTime.setText(null);
fullCard.getCard().setDueDate(null);
- clearDueDate.setVisibility(View.GONE);
+ binding.clearDueDate.setVisibility(View.GONE);
});
} else {
- dueDate.setEnabled(false);
- dueDateTime.setEnabled(false);
- clearDueDate.setVisibility(View.GONE);
+ binding.dueDateDate.setEnabled(false);
+ binding.dueDateTime.setEnabled(false);
+ binding.clearDueDate.setVisibility(View.GONE);
}
}
private void setupLabels(long accountId, long boardId, boolean canEdit) {
- labelsGroup.removeAllViews();
+ binding.labelsGroup.removeAllViews();
if (canEdit) {
Long localCardId = fullCard.getCard().getLocalId();
localCardId = localCardId == null ? -1 : localCardId;
- labels.setAdapter(new LabelAutoCompleteAdapter(this, activity, accountId, boardId, localCardId));
- labels.setOnItemClickListener((adapterView, view, position, id) -> {
+ binding.labels.setAdapter(new LabelAutoCompleteAdapter(this, activity, accountId, boardId, localCardId));
+ binding.labels.setOnItemClickListener((adapterView, view, position, id) -> {
Label label = (Label) adapterView.getItemAtPosition(position);
if (LabelAutoCompleteAdapter.CREATE_ID == label.getLocalId()) {
Label newLabel = new Label(label);
- newLabel.setTitle(((LabelAutoCompleteAdapter) labels.getAdapter()).getLastFilterText());
+ newLabel.setTitle(((LabelAutoCompleteAdapter) binding.labels.getAdapter()).getLastFilterText());
newLabel.setLocalId(null);
observeOnce(syncManager.createLabel(accountId, newLabel, boardId), CardDetailsFragment.this, createdLabel -> {
newLabel.setLocalId(createdLabel.getLocalId());
cardDetailsListener.onLabelAdded(createdLabel);
- labelsGroup.addView(createChipFromLabel(newLabel));
- labelsGroup.setVisibility(View.VISIBLE);
+ binding.labelsGroup.addView(createChipFromLabel(newLabel));
+ binding.labelsGroup.setVisibility(View.VISIBLE);
});
} else {
cardDetailsListener.onLabelAdded(label);
- labelsGroup.addView(createChipFromLabel(label));
- labelsGroup.setVisibility(View.VISIBLE);
+ binding.labelsGroup.addView(createChipFromLabel(label));
+ binding.labelsGroup.setVisibility(View.VISIBLE);
}
- labels.setText("");
+ binding.labels.setText("");
});
} else {
- labels.setEnabled(false);
+ binding.labels.setEnabled(false);
}
if (fullCard.getLabels() != null && fullCard.getLabels().size() > 0) {
for (Label label : fullCard.getLabels()) {
- labelsGroup.addView(createChipFromLabel(label));
+ binding.labelsGroup.addView(createChipFromLabel(label));
}
- labelsGroup.setVisibility(View.VISIBLE);
+ binding.labelsGroup.setVisibility(View.VISIBLE);
} else {
- labelsGroup.setVisibility(View.INVISIBLE);
+ binding.labelsGroup.setVisibility(View.INVISIBLE);
}
}
@@ -338,10 +312,10 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
Chip chip = new Chip(activity);
chip.setText(label.getTitle());
if (canEdit) {
- chip.setCloseIcon(closeCircleDrawable);
+ chip.setCloseIcon(getResources().getDrawable(R.drawable.ic_close_circle_grey600));
chip.setCloseIconVisible(true);
chip.setOnCloseIconClickListener(v -> {
- labelsGroup.removeView(chip);
+ binding.labelsGroup.removeView(chip);
cardDetailsListener.onLabelRemoved(label);
});
}
@@ -366,18 +340,18 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
if (canEdit) {
Long localCardId = fullCard.getCard().getLocalId();
localCardId = localCardId == null ? -1 : localCardId;
- people.setAdapter(new UserAutoCompleteAdapter(this, activity, accountId, boardId, localCardId));
- people.setOnItemClickListener((adapterView, view, position, id) -> {
+ binding.people.setAdapter(new UserAutoCompleteAdapter(this, activity, accountId, boardId, localCardId));
+ binding.people.setOnItemClickListener((adapterView, view, position, id) -> {
User user = (User) adapterView.getItemAtPosition(position);
cardDetailsListener.onUserAdded(user);
if (baseUrl != null) {
addAvatar(baseUrl, user);
}
- people.setText("");
+ binding.people.setText("");
});
if (this.fullCard.getAssignedUsers() != null) {
- peopleList.removeAllViews();
+ binding.peopleList.removeAllViews();
if (baseUrl != null) {
for (User user : this.fullCard.getAssignedUsers()) {
addAvatar(baseUrl, user);
@@ -385,7 +359,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
}
} else {
- people.setEnabled(false);
+ binding.people.setEnabled(false);
}
}
@@ -395,7 +369,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
if (canEdit) {
avatar.setOnClickListener(v -> {
cardDetailsListener.onUserRemoved(user);
- peopleList.removeView(avatar);
+ binding.peopleList.removeView(avatar);
Snackbar.make(
Objects.requireNonNull(getView()), getString(R.string.unassigned_user, user.getDisplayname()),
Snackbar.LENGTH_LONG)
@@ -405,24 +379,18 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}).show();
});
}
- peopleList.addView(avatar);
+ binding.peopleList.addView(avatar);
avatar.requestLayout();
ViewUtil.addAvatar(getContext(), avatar, baseUrl, user.getUid(), avatarSize, R.drawable.ic_person_grey600_24dp);
}
@Override
- public void onDestroy() {
- super.onDestroy();
- unbinder.unbind();
- }
-
- @Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
int hourOfDay;
int minute;
- if (dueDateTime.getText() != null && dueDateTime.length() > 0) {
+ if (binding.dueDateTime.getText() != null && binding.dueDateTime.length() > 0) {
hourOfDay = this.fullCard.getCard().getDueDate().getHours();
minute = this.fullCard.getCard().getDueDate().getMinutes();
} else {
@@ -432,13 +400,13 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
c.set(year, month, dayOfMonth, hourOfDay, minute);
this.fullCard.getCard().setDueDate(c.getTime());
- dueDate.setText(dateFormat.format(c.getTime()));
+ binding.dueDateDate.setText(dateFormat.format(c.getTime()));
cardDetailsListener.onDueDateChanged(fullCard.card.getDueDate());
if (this.fullCard.getCard().getDueDate() == null || this.fullCard.getCard().getDueDate().getTime() == 0) {
- clearDueDate.setVisibility(View.GONE);
+ binding.clearDueDate.setVisibility(View.GONE);
} else {
- clearDueDate.setVisibility(View.VISIBLE);
+ binding.clearDueDate.setVisibility(View.VISIBLE);
}
}
@@ -449,12 +417,12 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
}
this.fullCard.getCard().getDueDate().setHours(hourOfDay);
this.fullCard.getCard().getDueDate().setMinutes(minute);
- dueDateTime.setText(dueTime.format(this.fullCard.getCard().getDueDate().getTime()));
+ binding.dueDateTime.setText(dueTime.format(this.fullCard.getCard().getDueDate().getTime()));
cardDetailsListener.onDueDateChanged(fullCard.card.getDueDate());
if (this.fullCard.getCard().getDueDate() == null || this.fullCard.getCard().getDueDate().getTime() == 0) {
- clearDueDate.setVisibility(View.GONE);
+ binding.clearDueDate.setVisibility(View.GONE);
} else {
- clearDueDate.setVisibility(View.VISIBLE);
+ binding.clearDueDate.setVisibility(View.VISIBLE);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardTabAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardTabAdapter.java
index db57f5652..a55660622 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardTabAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardTabAdapter.java
@@ -1,33 +1,25 @@
package it.niedermann.nextcloud.deck.ui.card;
-import android.app.Activity;
+import android.content.Context;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
-import butterknife.BindString;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.R;
public class CardTabAdapter extends FragmentStatePagerAdapter {
+ private Context context;
private long accountId;
private long localId;
private long boardId;
private boolean canEdit;
- @BindString(R.string.card_edit_details)
- String details;
- @BindString(R.string.card_edit_attachments)
- String attachments;
- @BindString(R.string.card_edit_activity)
- String activity;
-
- public CardTabAdapter(FragmentManager fm, Activity activity, long accountId, long localId, long boardId, boolean canEdit) {
+ public CardTabAdapter(@NonNull FragmentManager fm, @NonNull Context context, long accountId, long localId, long boardId, boolean canEdit) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
- ButterKnife.bind(this, activity);
+ this.context = context;
this.accountId = accountId;
this.localId = localId;
this.boardId = boardId;
@@ -54,11 +46,11 @@ public class CardTabAdapter extends FragmentStatePagerAdapter {
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
- return details;
+ return context.getString(R.string.card_edit_details);
case 1:
- return attachments;
+ return context.getString(R.string.card_edit_attachments);
case 2:
- return activity;
+ return context.getString(R.string.card_edit_activity);
default:
throw new IllegalArgumentException("position " + position + "is not available");
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CommentDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CommentDialogFragment.java
index f67863a84..84947a526 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CommentDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CommentDialogFragment.java
@@ -7,7 +7,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
-import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -16,16 +15,14 @@ import androidx.fragment.app.DialogFragment;
import java.util.Objects;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.DialogAddCommentBinding;
public class CommentDialogFragment extends DialogFragment {
private AddCommentListener addCommentListener;
- @BindView(R.id.input)
- EditText input;
+ private DialogAddCommentBinding binding;
/**
* Use newInstance()-Method
@@ -46,23 +43,22 @@ public class CommentDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- View view = requireActivity().getLayoutInflater().inflate(R.layout.dialog_add_comment, null);
- ButterKnife.bind(this, view);
+ binding = DialogAddCommentBinding.inflate(getLayoutInflater());
- return new AlertDialog.Builder(getActivity(), Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert)
- .setView(view)
+ return new AlertDialog.Builder(requireActivity(), Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert)
+ .setView(binding.getRoot())
.setTitle(R.string.simple_comment)
.setNegativeButton(android.R.string.cancel, (dialog, which) -> {
// Do something else
})
- .setPositiveButton(R.string.simple_add, (dialog, which) -> addCommentListener.onCommentAdded(input.getText().toString()))
+ .setPositiveButton(R.string.simple_add, (dialog, which) -> addCommentListener.onCommentAdded(binding.input.getText().toString()))
.create();
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- input.requestFocus();
+ binding.input.requestFocus();
Objects.requireNonNull(Objects.requireNonNull(getDialog()).getWindow()).setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
return super.onCreateView(inflater, container, savedInstanceState);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java
index 88bde96dc..8e02b02e9 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java
@@ -8,8 +8,6 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
-import android.widget.ImageView;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
@@ -20,12 +18,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
-import butterknife.BindColor;
-import butterknife.BindInt;
-import butterknife.BindString;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.ItemAutocompleteDropdownBinding;
import it.niedermann.nextcloud.deck.model.Label;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.util.ViewUtil;
@@ -43,15 +37,7 @@ public class LabelAutoCompleteAdapter extends BaseAdapter implements Filterable
private String lastFilterText;
private boolean canManage = false;
- @BindInt(R.integer.max_labels_suggested)
- int maxLabelsSuggested;
- @BindString(R.string.label_add)
- String createLabelText;
- @BindColor(R.color.grey600)
- int createLabelColor;
-
LabelAutoCompleteAdapter(@NonNull LifecycleOwner owner, Activity activity, long accountId, long boardId, long cardId) {
- ButterKnife.bind(this, activity);
this.owner = owner;
this.context = activity;
this.accountId = accountId;
@@ -64,7 +50,7 @@ public class LabelAutoCompleteAdapter extends BaseAdapter implements Filterable
createLabel.setLocalId(CREATE_ID);
createLabel.setBoardId(boardId);
createLabel.setAccountId(accountId);
- createLabel.setColor(Integer.toHexString(createLabelColor));
+ createLabel.setColor(Integer.toHexString(context.getResources().getColor(R.color.grey600)));
canManage = true;
}
});
@@ -93,8 +79,9 @@ public class LabelAutoCompleteAdapter extends BaseAdapter implements Filterable
} else {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- convertView = inflater.inflate(R.layout.item_autocomplete_dropdown, parent, false);
- holder = new ViewHolder(convertView);
+ ItemAutocompleteDropdownBinding binding = ItemAutocompleteDropdownBinding.inflate(inflater, parent, false);
+ holder = new ViewHolder(binding);
+ convertView = binding.getRoot();
convertView.setTag(holder);
}
@@ -103,10 +90,10 @@ public class LabelAutoCompleteAdapter extends BaseAdapter implements Filterable
iconResource = R.drawable.ic_plus;
}
- holder.icon.setImageDrawable(
+ holder.binding.icon.setImageDrawable(
ViewUtil.getTintedImageView(context, iconResource,"#" + getItem(position).getColor()
));
- holder.label.setText(getItem(position).getTitle());
+ holder.binding.label.setText(getItem(position).getTitle());
return convertView;
}
@@ -122,11 +109,11 @@ public class LabelAutoCompleteAdapter extends BaseAdapter implements Filterable
Objects.requireNonNull(((Fragment) owner).getActivity()).runOnUiThread(() -> {
LiveData<List<Label>> liveData = constraint.toString().trim().length() > 0
? syncManager.searchNotYetAssignedLabelsByTitle(accountId, boardId, cardId, constraint.toString())
- : syncManager.findProposalsForLabelsToAssign(accountId, boardId, cardId, maxLabelsSuggested);
+ : syncManager.findProposalsForLabelsToAssign(accountId, boardId, cardId, context.getResources().getInteger(R.integer.max_labels_suggested));
liveData.observe(owner, (labels -> {
final boolean constraintLengthGreaterZero = constraint.toString().trim().length() > 0;
if (canManage && constraintLengthGreaterZero) {
- createLabel.setTitle(String.format(createLabelText, constraint));
+ createLabel.setTitle(String.format(context.getString(R.string.label_add), constraint));
}
if (labels != null) {
if (canManage && constraintLengthGreaterZero) {
@@ -168,13 +155,10 @@ public class LabelAutoCompleteAdapter extends BaseAdapter implements Filterable
}
static class ViewHolder {
- @BindView(R.id.icon)
- ImageView icon;
- @BindView(R.id.label)
- TextView label;
+ ItemAutocompleteDropdownBinding binding;
- ViewHolder(View view) {
- ButterKnife.bind(this, view);
+ ViewHolder(ItemAutocompleteDropdownBinding binding) {
+ this.binding = binding;
}
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/UserAutoCompleteAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/UserAutoCompleteAdapter.java
index 570080250..78e5202d0 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/UserAutoCompleteAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/UserAutoCompleteAdapter.java
@@ -8,8 +8,6 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
-import android.widget.ImageView;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
@@ -25,11 +23,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
-import butterknife.BindInt;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.ItemAutocompleteDropdownBinding;
import it.niedermann.nextcloud.deck.model.User;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.util.ViewUtil;
@@ -37,7 +33,7 @@ import it.niedermann.nextcloud.deck.util.ViewUtil;
import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
public class UserAutoCompleteAdapter extends BaseAdapter implements Filterable {
- private Context activity;
+ private Context context;
private List<User> userList = new ArrayList<>();
private SyncManager syncManager;
private long accountId;
@@ -45,17 +41,13 @@ public class UserAutoCompleteAdapter extends BaseAdapter implements Filterable {
private long cardId;
private LifecycleOwner owner;
- @BindInt(R.integer.max_users_suggested)
- int maxUsersSuggested;
-
public UserAutoCompleteAdapter(@NonNull LifecycleOwner owner, Activity activity, long accountId, long boardId) {
this(owner, activity, accountId, boardId, 0L);
}
UserAutoCompleteAdapter(@NonNull LifecycleOwner owner, Activity activity, long accountId, long boardId, long cardId) {
- ButterKnife.bind(this, activity);
this.owner = owner;
- this.activity = activity;
+ this.context = activity;
this.accountId = accountId;
this.boardId = boardId;
this.cardId = cardId;
@@ -83,18 +75,19 @@ public class UserAutoCompleteAdapter extends BaseAdapter implements Filterable {
if (convertView != null) {
holder = (ViewHolder) convertView.getTag();
} else {
- LayoutInflater inflater = (LayoutInflater) activity
+ LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- convertView = inflater.inflate(R.layout.item_autocomplete_dropdown, parent, false);
- holder = new ViewHolder(convertView);
+ ItemAutocompleteDropdownBinding binding = ItemAutocompleteDropdownBinding.inflate(inflater, parent, false);
+ holder = new ViewHolder(binding);
+ convertView = binding.getRoot();
convertView.setTag(holder);
}
try {
- SingleSignOnAccount account = SingleAccountHelper.getCurrentSingleSignOnAccount(activity);
+ SingleSignOnAccount account = SingleAccountHelper.getCurrentSingleSignOnAccount(context);
ViewUtil.addAvatar(
- activity,
- holder.icon,
+ context,
+ holder.binding.icon,
account.url,
getItem(position).getUid(),
R.drawable.ic_person_grey600_24dp
@@ -105,7 +98,7 @@ public class UserAutoCompleteAdapter extends BaseAdapter implements Filterable {
DeckLog.logError(e);
}
- holder.label.setText(getItem(position).getDisplayname());
+ holder.binding.label.setText(getItem(position).getDisplayname());
return convertView;
}
@@ -122,11 +115,11 @@ public class UserAutoCompleteAdapter extends BaseAdapter implements Filterable {
if (cardId == 0L) {
liveData = constraint.toString().trim().length() > 0
? syncManager.searchUserByUidOrDisplayNameForACL(accountId, boardId, constraint.toString())
- : syncManager.findProposalsForUsersToAssignForACL(accountId, boardId, maxUsersSuggested);
+ : syncManager.findProposalsForUsersToAssignForACL(accountId, boardId, context.getResources().getInteger(R.integer.max_users_suggested));
} else {
liveData = constraint.toString().trim().length() > 0
? syncManager.searchUserByUidOrDisplayName(accountId, cardId, constraint.toString())
- : syncManager.findProposalsForUsersToAssign(accountId, boardId, cardId, maxUsersSuggested);
+ : syncManager.findProposalsForUsersToAssign(accountId, boardId, cardId, context.getResources().getInteger(R.integer.max_users_suggested));
}
observeOnce(liveData, owner, users -> {
if (users != null) {
@@ -158,13 +151,10 @@ public class UserAutoCompleteAdapter extends BaseAdapter implements Filterable {
}
static class ViewHolder {
- @BindView(R.id.icon)
- ImageView icon;
- @BindView(R.id.label)
- TextView label;
+ ItemAutocompleteDropdownBinding binding;
- ViewHolder(View view) {
- ButterKnife.bind(this, view);
+ ViewHolder(ItemAutocompleteDropdownBinding binding) {
+ this.binding = binding;
}
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionActivity.java
index 367e7ab34..d7c1fba7e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionActivity.java
@@ -5,12 +5,10 @@ import android.content.ClipboardManager;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
-import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
import com.nextcloud.android.sso.helper.VersionCheckHelper;
@@ -18,41 +16,29 @@ import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Objects;
-import butterknife.BindString;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.OnClick;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.ActivityExceptionBinding;
public class ExceptionActivity extends AppCompatActivity {
- Throwable throwable;
-
- @BindView(R.id.toolbar)
- Toolbar toolbar;
- @BindView(R.id.message)
- TextView message;
- @BindView(R.id.stacktrace)
- TextView stacktrace;
- @BindString(R.string.error)
- String title;
- @BindString(R.string.simple_exception)
- String exception;
- @BindString(R.string.copied_to_clipboard)
- String copiedToClipboard;
+ private ActivityExceptionBinding binding;
public static final String KEY_THROWABLE = "T";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
- setContentView(R.layout.activity_exception);
- ButterKnife.bind(this);
+ binding = ActivityExceptionBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
super.onCreate(savedInstanceState);
- throwable = ((Throwable) getIntent().getSerializableExtra(KEY_THROWABLE));
+
+ binding.copy.setOnClickListener((v) -> copyStacktraceToClipboard());
+ binding.close.setOnClickListener((v) -> finish());
+
+ Throwable throwable = ((Throwable) getIntent().getSerializableExtra(KEY_THROWABLE));
throwable.printStackTrace();
- setSupportActionBar(toolbar);
- Objects.requireNonNull(getSupportActionBar()).setTitle(title);
- this.message.setText(throwable.getMessage());
+ setSupportActionBar(binding.toolbar);
+ Objects.requireNonNull(getSupportActionBar()).setTitle(R.string.error);
+ binding.message.setText(throwable.getMessage());
String debugInfo = "";
@@ -77,11 +63,11 @@ public class ExceptionActivity extends AppCompatActivity {
debugInfo += "\nOS Version: " + System.getProperty("os.version") + "(" + android.os.Build.VERSION.INCREMENTAL + ")";
debugInfo += "\nOS API Level: " + android.os.Build.VERSION.SDK_INT;
debugInfo += "\nDevice: " + android.os.Build.DEVICE;
- debugInfo += "\nModel (and Product): " + android.os.Build.MODEL + " ("+ android.os.Build.PRODUCT + ")";
+ debugInfo += "\nModel (and Product): " + android.os.Build.MODEL + " (" + android.os.Build.PRODUCT + ")";
debugInfo += "\n\n---";
- this.stacktrace.setText(debugInfo + "\n\n" + getStacktraceOf(throwable));
+ binding.stacktrace.setText(debugInfo + "\n\n" + getStacktraceOf(throwable));
}
private String getStacktraceOf(Throwable e) {
@@ -90,17 +76,10 @@ public class ExceptionActivity extends AppCompatActivity {
return sw.toString();
}
-
- @OnClick(R.id.copy)
void copyStacktraceToClipboard() {
final android.content.ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
- ClipData clipData = ClipData.newPlainText(getString(R.string.simple_exception), "```\n" + this.stacktrace.getText() + "\n```");
+ ClipData clipData = ClipData.newPlainText(getString(R.string.simple_exception), "```\n" + binding.stacktrace.getText() + "\n```");
clipboardManager.setPrimaryClip(clipData);
- Toast.makeText(this, copiedToClipboard, Toast.LENGTH_SHORT).show();
- }
-
- @OnClick(R.id.close)
- void close() {
- finish();
+ Toast.makeText(this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show();
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/colorchooser/ColorChooser.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/colorchooser/ColorChooser.java
index b83b70ed9..df977efe3 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/colorchooser/ColorChooser.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/colorchooser/ColorChooser.java
@@ -10,15 +10,13 @@ import android.widget.LinearLayout;
import androidx.annotation.Nullable;
-import com.google.android.flexbox.FlexboxLayout;
import com.skydoves.colorpickerview.ColorEnvelope;
import com.skydoves.colorpickerview.ColorPickerView;
import com.skydoves.colorpickerview.listeners.ColorEnvelopeListener;
import com.skydoves.colorpickerview.sliders.BrightnessSlideBar;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.WidgetColorChooserBinding;
import it.niedermann.nextcloud.deck.util.ViewUtil;
public class ColorChooser extends LinearLayout {
@@ -26,8 +24,7 @@ public class ColorChooser extends LinearLayout {
private Context context;
private String[] colors;
- @BindView(R.id.colorPicker)
- FlexboxLayout colorPicker;
+ WidgetColorChooserBinding binding;
private String selectedColor;
private String previouslySelectedColor;
@@ -47,10 +44,9 @@ public class ColorChooser extends LinearLayout {
colors = getResources().getStringArray(a.getResourceId(R.styleable.ColorChooser_colors, 0));
a.recycle();
- LayoutInflater inflater = (LayoutInflater) context
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- inflater.inflate(R.layout.widget_color_chooser, this, true);
- ButterKnife.bind(this);
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+ binding = WidgetColorChooserBinding.inflate(inflater, this, true);
initDefaultColors();
customColorPicker = (ColorPickerView) findViewById(R.id.customColorPicker);
@@ -61,12 +57,12 @@ public class ColorChooser extends LinearLayout {
customColorPicker.setColorListener(new ColorEnvelopeListener() {
@Override
public void onColorSelected(ColorEnvelope envelope, boolean fromUser) {
- String customColor = "#" + envelope.getHexCode().substring(2);
+ String customColor = "#" + envelope.getHexCode().substring(2);
selectedColor = customColor;
previouslySelectedColor = customColor;
//previouslySelectedColor = customColor;
customColorChooser.setImageDrawable(ViewUtil.getTintedImageView(context, R.drawable.circle_alpha_colorize_36dp, selectedColor));
- }
+ }
});
}
@@ -83,7 +79,7 @@ public class ColorChooser extends LinearLayout {
this.previouslySelectedImageView = image;
});
image.setImageDrawable(ViewUtil.getTintedImageView(this.context, R.drawable.circle_grey600_36dp, color));
- colorPicker.addView(image);
+ binding.colorPicker.addView(image);
}
}
@@ -96,12 +92,12 @@ public class ColorChooser extends LinearLayout {
} else {
customColorChooser.setImageDrawable(ViewUtil.getTintedImageView(this.context, R.drawable.circle_alpha_colorize_36dp, this.selectedColor));
}
- colorPicker.addView(customColorChooser);
+ binding.colorPicker.addView(customColorChooser);
customColorChooser.setOnClickListener((View imageView) -> {
// when clicked sets the custom color wheel to be visible
customColorPicker.setVisibility(View.VISIBLE);
brightnessSlideBar.setVisibility(View.VISIBLE);
- });
+ });
}
public void selectColor(String newColor) {
@@ -109,7 +105,7 @@ public class ColorChooser extends LinearLayout {
for (int i = 0; i < colors.length; i++) {
if (colors[i].equals(newColor)) {
initCustomColorChooser(); // adds custom color picker, with default color
- colorPicker.getChildAt(i).performClick();
+ binding.colorPicker.getChildAt(i).performClick();
return;
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/dnd/CrossTabDragAndDrop.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/dnd/CrossTabDragAndDrop.java
index f35edaed3..3c5af634d 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/dnd/CrossTabDragAndDrop.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/dnd/CrossTabDragAndDrop.java
@@ -17,8 +17,6 @@ import java.util.List;
import java.util.Objects;
import java.util.Set;
-import butterknife.BindInt;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.model.full.FullCard;
@@ -38,25 +36,15 @@ public class CrossTabDragAndDrop {
private long lastSwap = 0;
private long lastMove = 0;
- @BindInt(R.integer.drag_n_drop_dp_to_react)
- int dragAndDropDPtoReact;
- @BindInt(R.integer.drag_n_drop_dp_to_react_top_bottom)
- int dragAndDropDPtoReactTopBottom;
- @BindInt(R.integer.drag_n_drop_ms_to_react)
- int msToReact;
- @BindInt(R.integer.drag_n_drop_dp_to_react_top_bottom)
- int msToReactOnMove;
-
private final float pxToReactTopBottom;
private final Set<CardMovedByDragListener> moveListenerList = new HashSet<>(1);
public CrossTabDragAndDrop(Activity activity) {
this.activity = activity;
- ButterKnife.bind(this, activity);
final float density = activity.getResources().getDisplayMetrics().density;
- this.pxToReact = dragAndDropDPtoReact * density;
- this.pxToReactTopBottom = dragAndDropDPtoReactTopBottom * density;
+ this.pxToReact = activity.getResources().getInteger(R.integer.drag_n_drop_dp_to_react) * density;
+ this.pxToReactTopBottom = activity.getResources().getInteger(R.integer.drag_n_drop_dp_to_react_top_bottom) * density;
}
public void register(final ViewPager viewPager, TabLayout stackLayout) {
@@ -78,7 +66,7 @@ public class CrossTabDragAndDrop {
activity.getWindowManager().getDefaultDisplay().getSize(size);
long now = System.currentTimeMillis();
- if (lastSwap + msToReact < now) { // don't change Tabs so fast!
+ if (lastSwap + activity.getResources().getInteger(R.integer.drag_n_drop_ms_to_react) < now) { // don't change Tabs so fast!
int oldTabPosition = viewPager.getCurrentItem();
boolean shouldSwitchTab = true;
@@ -111,7 +99,7 @@ public class CrossTabDragAndDrop {
}
- if (lastMove + msToReactOnMove < now){
+ if (lastMove + activity.getResources().getInteger(R.integer.drag_n_drop_dp_to_react_top_bottom) < now) {
//push around the other cards
View viewUnder = currentRecyclerView.findChildViewUnder(dragEvent.getX(), dragEvent.getY());
@@ -182,10 +170,10 @@ public class CrossTabDragAndDrop {
}
private void detectAndKillDuplicatesInNeighbourTab(ViewPager viewPager, FullCard cardToFind, int oldTabPosition, int newTabPosition) {
- int tabPositionToCheck = newTabPosition > oldTabPosition ? newTabPosition+1 : newTabPosition-1;
+ int tabPositionToCheck = newTabPosition > oldTabPosition ? newTabPosition + 1 : newTabPosition - 1;
if (isMovePossible(viewPager, tabPositionToCheck)) {
- viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
+ viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
@@ -203,7 +191,7 @@ public class CrossTabDragAndDrop {
List<FullCard> cardList = cardAdapter.getCardList();
for (int i = 0; i < cardList.size(); i++) {
FullCard c = cardList.get(i);
- if (cardToFind.getCard().getLocalId().equals(c.getLocalId())){
+ if (cardToFind.getCard().getLocalId().equals(c.getLocalId())) {
cardAdapter.removeItem(i);
cardAdapter.notifyItemRemoved(i);
// DeckLog.log("dnd removed dupe at tab "+tabPositionToCheck+": "+c.getCard().getTitle());
@@ -231,11 +219,11 @@ public class CrossTabDragAndDrop {
}
}
- public void addCardMovedByDragListener(CardMovedByDragListener listener){
+ public void addCardMovedByDragListener(CardMovedByDragListener listener) {
moveListenerList.add(listener);
}
- public void removeCardMovedByDragListener(CardMovedByDragListener listener){
+ public void removeCardMovedByDragListener(CardMovedByDragListener listener) {
moveListenerList.remove(listener);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
index 17d5be87e..8ed58f04a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
@@ -9,8 +9,6 @@ import android.preference.SwitchPreference;
import androidx.annotation.Nullable;
-import butterknife.BindString;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
@@ -18,29 +16,20 @@ import it.niedermann.nextcloud.deck.persistence.sync.SyncWorker;
public class SettingsFragment extends PreferenceFragment {
- @BindString(R.string.pref_key_wifi_only)
- String prefKeyWifiOnly;
- @BindString(R.string.pref_key_dark_theme)
- String prefKeyDarkTheme;
- @BindString(R.string.pref_key_background_sync)
- String prefKeyBackgroundSync;
-
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- ButterKnife.bind(this, getActivity());
-
addPreferencesFromResource(R.xml.settings);
- final SwitchPreference wifiOnlyPref = (SwitchPreference) findPreference(prefKeyWifiOnly);
+ final SwitchPreference wifiOnlyPref = (SwitchPreference) findPreference(getString(R.string.pref_key_wifi_only));
wifiOnlyPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> {
Boolean syncOnWifiOnly = (Boolean) newValue;
DeckLog.log("syncOnWifiOnly: " + syncOnWifiOnly);
return true;
});
- final SwitchPreference themePref = (SwitchPreference) findPreference(prefKeyDarkTheme);
+ final SwitchPreference themePref = (SwitchPreference) findPreference(getString(R.string.pref_key_dark_theme));
themePref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> {
Boolean darkTheme = (Boolean) newValue;
DeckLog.log("darkTheme: " + darkTheme);
@@ -50,7 +39,7 @@ public class SettingsFragment extends PreferenceFragment {
return true;
});
- final ListPreference backgroundSyncPref = (ListPreference) findPreference(prefKeyBackgroundSync);
+ final ListPreference backgroundSyncPref = (ListPreference) findPreference(getString(R.string.pref_key_background_sync));
backgroundSyncPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> {
SyncWorker.update(getActivity().getApplicationContext(), (String) newValue);
return true;
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java
index 908137005..d43f225ef 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java
@@ -7,7 +7,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
-import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -16,10 +15,9 @@ import androidx.fragment.app.DialogFragment;
import java.util.Objects;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.DialogStackCreateBinding;
public class EditStackDialogFragment extends DialogFragment {
public static final Long NO_STACK_ID = -1L;
@@ -28,8 +26,7 @@ public class EditStackDialogFragment extends DialogFragment {
private long stackId = NO_STACK_ID;
private EditStackListener editStackListener;
- @BindView(R.id.input)
- EditText input;
+ private DialogStackCreateBinding binding;
/**
* Use newInstance()-Method
@@ -50,11 +47,10 @@ public class EditStackDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- View view = requireActivity().getLayoutInflater().inflate(R.layout.dialog_stack_create, null);
- ButterKnife.bind(this, view);
+ binding = DialogStackCreateBinding.inflate(getLayoutInflater());
- AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert)
- .setView(view)
+ AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity(), Application.getAppTheme(getContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert)
+ .setView(binding.getRoot())
.setNegativeButton(android.R.string.cancel, (dialog, which) -> {
// Do something else
});
@@ -64,11 +60,11 @@ public class EditStackDialogFragment extends DialogFragment {
stackId = getArguments().getLong(KEY_STACK_ID);
if (stackId == NO_STACK_ID) {
builder.setTitle(R.string.add_column)
- .setPositiveButton(R.string.simple_add, (dialog, which) -> editStackListener.onCreateStack(input.getText().toString()));
+ .setPositiveButton(R.string.simple_add, (dialog, which) -> editStackListener.onCreateStack(binding.input.getText().toString()));
} else {
- input.setText(getArguments().getString(KEY_OLD_TITLE));
+ binding.input.setText(getArguments().getString(KEY_OLD_TITLE));
builder.setTitle(R.string.rename_column)
- .setPositiveButton(R.string.simple_rename, (dialog, which) -> editStackListener.onUpdateStack(stackId, input.getText().toString()));
+ .setPositiveButton(R.string.simple_rename, (dialog, which) -> editStackListener.onUpdateStack(stackId, binding.input.getText().toString()));
}
return builder.create();
}
@@ -76,7 +72,7 @@ public class EditStackDialogFragment extends DialogFragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- input.requestFocus();
+ binding.input.requestFocus();
Objects.requireNonNull(Objects.requireNonNull(getDialog()).getWindow()).setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
return super.onCreateView(inflater, container, savedInstanceState);
}
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
index 16606c116..206010840 100644
--- a/app/src/main/res/layout/activity_about.xml
+++ b/app/src/main/res/layout/activity_about.xml
@@ -19,7 +19,7 @@
tools:title="@string/about" />
<com.google.android.material.tabs.TabLayout
- android:id="@+id/tabs"
+ android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
@@ -27,7 +27,7 @@
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
- android:id="@+id/pager"
+ android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
diff --git a/app/src/main/res/layout/fragment_card_edit_tab_activities.xml b/app/src/main/res/layout/fragment_card_edit_tab_activities.xml
index d6fba28ff..2fe7bed0b 100644
--- a/app/src/main/res/layout/fragment_card_edit_tab_activities.xml
+++ b/app/src/main/res/layout/fragment_card_edit_tab_activities.xml
@@ -8,7 +8,7 @@
tools:context=".ui.EditActivity">
<androidx.recyclerview.widget.RecyclerView
- android:id="@+id/activity_list"
+ android:id="@+id/activities_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
@@ -16,7 +16,7 @@
tools:listitem="@layout/item_activity" />
<it.niedermann.nextcloud.deck.ui.helper.emptycontentview.EmptyContentView
- android:id="@+id/no_activities"
+ android:id="@+id/empty_content_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
diff --git a/app/src/main/res/layout/fragment_card_edit_tab_attachments.xml b/app/src/main/res/layout/fragment_card_edit_tab_attachments.xml
index 93d76fb53..1d0f64d11 100644
--- a/app/src/main/res/layout/fragment_card_edit_tab_attachments.xml
+++ b/app/src/main/res/layout/fragment_card_edit_tab_attachments.xml
@@ -17,7 +17,7 @@
tools:visibility="visible" />
<it.niedermann.nextcloud.deck.ui.helper.emptycontentview.EmptyContentView
- android:id="@+id/no_attachments"
+ android:id="@+id/empty_content_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"