diff options
author | stefan-niedermann <info@niedermann.it> | 2019-10-19 15:27:21 +0300 |
---|---|---|
committer | stefan-niedermann <info@niedermann.it> | 2019-10-19 15:27:21 +0300 |
commit | 1f25eb3b662777aa79de4d6220204d6c85581365 (patch) | |
tree | 142c88fdcc95ad45adfec55419c778fc1a3edc4c | |
parent | 26e5b226cf7939abc9f73e62fca5abbeccf58155 (diff) |
Fix #185 Use butterknife resource binding where possible
18 files changed, 233 insertions, 119 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java index c6373bb6b..95fe0ef47 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java @@ -19,6 +19,8 @@ import java.util.List; import java.util.Locale; import java.util.TimeZone; +import butterknife.BindString; +import butterknife.ButterKnife; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.api.ApiProvider; import it.niedermann.nextcloud.deck.api.IResponseCallback; @@ -39,6 +41,9 @@ import it.niedermann.nextcloud.deck.util.DateUtil; public class ServerAdapter { + @BindString(R.string.pref_key_wifi_only) + String prefKeyWifiOnly; + private static final DateFormat API_FORMAT = new SimpleDateFormat("E, dd MMM yyyy hh:mm:ss z", Locale.US); @@ -54,6 +59,7 @@ public class ServerAdapter { public ServerAdapter(Context applicationContext, Activity sourceActivity) { this.applicationContext = applicationContext; this.sourceActivity = sourceActivity; + ButterKnife.bind(this, sourceActivity); provider = new ApiProvider(applicationContext); lastSyncPref = applicationContext.getSharedPreferences( applicationContext.getString(R.string.shared_preference_last_sync), Context.MODE_PRIVATE); @@ -82,7 +88,7 @@ public class ServerAdapter { ConnectivityManager cm = (ConnectivityManager) applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE); if (cm != null) { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext); - if (sharedPreferences.getBoolean(applicationContext.getResources().getString(R.string.pref_key_wifi_only), false)){ + if (sharedPreferences.getBoolean(prefKeyWifiOnly, false)){ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { Network network = cm.getActiveNetwork(); NetworkCapabilities capabilities = cm.getNetworkCapabilities(network); @@ -100,7 +106,7 @@ public class ServerAdapter { } else { - return cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected(); + return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected(); } } return false; 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 bb82139c1..a72cbe666 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 @@ -2,6 +2,7 @@ package it.niedermann.nextcloud.deck.ui; import android.os.Bundle; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; @@ -11,6 +12,7 @@ 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; @@ -29,6 +31,13 @@ public class AboutActivity extends AppCompatActivity { @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); @@ -57,6 +66,7 @@ public class AboutActivity extends AppCompatActivity { /** * return the right fragment for the given position */ + @NonNull @Override public Fragment getItem(int position) { switch (position) { @@ -70,7 +80,7 @@ public class AboutActivity extends AppCompatActivity { return new AboutFragmentLicenseTab(); default: - return null; + throw new IllegalArgumentException("position must be between 0 and 2"); } } @@ -81,16 +91,16 @@ public class AboutActivity extends AppCompatActivity { public CharSequence getPageTitle(int position) { switch (position) { case 0: - return getString(R.string.about_credits_tab_title); + return creditsTitle; case 1: - return getString(R.string.about_contribution_tab_title); + return contributionTitle; case 2: - return getString(R.string.about_license_tab_title); + return licenseTitle; default: - return null; + throw new IllegalArgumentException("position must be between 0 and 2"); } } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java index 35681fe86..62068ac3a 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java @@ -49,6 +49,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import butterknife.BindInt; +import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.nextcloud.deck.Application; @@ -83,6 +85,27 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga @BindView(R.id.toolbar) Toolbar toolbar; + @BindString(R.string.account_is_getting_imported) + String accountIsGettingImported; + @BindString(R.string.account_already_added) + String accountAlreadyAdded; + @BindString(R.string.shared_preference_last_account) + String sharedPreferenceLastAccount; + @BindString(R.string.url_fragment_update_deck) + String urlFragmentUpdateDeck; + @BindString(R.string.add_board) + String addBoard; + @BindString(R.string.no_account) + String noAccount; + @BindString(R.string.add_account) + String addAccount; + @BindInt(R.integer.minimum_server_app_major) + int minimumServerAppMajor; + @BindInt(R.integer.minimum_server_app_minor) + int minimumServerAppMinor; + @BindInt(R.integer.minimum_server_app_patch) + int minimumServerAppPatch; + protected List<Account> accountsList = new ArrayList<>(); protected Account account; protected boolean accountChooserActive = false; @@ -112,29 +135,26 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga try { accountLiveData.throwError(); } catch (SQLiteConstraintException ex) { - Snackbar.make(coordinatorLayout, getString(R.string.account_already_added), Snackbar.LENGTH_LONG).show(); + Snackbar.make(coordinatorLayout, accountAlreadyAdded, Snackbar.LENGTH_LONG).show(); } } else { // Remember last account - THIS HAS TO BE DONE SYNCHRONOUSLY SharedPreferences.Editor editor = sharedPreferences.edit(); DeckLog.log("--- Write: shared_preference_last_account" + " | " + createdAccount.getId()); - editor.putLong(getString(R.string.shared_preference_last_account), createdAccount.getId()); + editor.putLong(sharedPreferenceLastAccount, createdAccount.getId()); editor.commit(); syncManager.getServerVersion(new IResponseCallback<Capabilities>(createdAccount) { @Override public void onResponse(Capabilities response) { - if (response.getDeckVersion().compareTo(new Version( - getResources().getInteger(R.integer.minimum_server_app_major), - getResources().getInteger(R.integer.minimum_server_app_minor), - getResources().getInteger(R.integer.minimum_server_app_patch))) < 0) { + if (response.getDeckVersion().compareTo(new Version(minimumServerAppMajor, minimumServerAppMinor, minimumServerAppPatch)) < 0) { deckVersionTooLowSnackbar = Snackbar.make(coordinatorLayout, R.string.your_deck_version_is_too_old, Snackbar.LENGTH_INDEFINITE).setAction("Learn more", v -> { new AlertDialog.Builder(DrawerActivity.this, Application.getAppTheme(getApplicationContext()) ? R.style.DialogDarkTheme : R.style.ThemeOverlay_AppCompat_Dialog_Alert) .setTitle(R.string.update_deck) .setMessage(R.string.deck_outdated_please_update) .setPositiveButton(R.string.simple_update, (dialog, whichButton) -> { Intent openURL = new Intent(Intent.ACTION_VIEW); - openURL.setData(Uri.parse(createdAccount.getUrl() + getString(R.string.url_fragment_update_deck))); + openURL.setData(Uri.parse(createdAccount.getUrl() + urlFragmentUpdateDeck)); startActivity(openURL); }) .setNegativeButton(R.string.simple_discard, null).show(); @@ -142,10 +162,10 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga deckVersionTooLowSnackbar.show(); syncManager.deleteAccount(createdAccount.getId()); - sharedPreferences.getLong(getString(R.string.shared_preference_last_account), NO_ACCOUNTS); + sharedPreferences.getLong(sharedPreferenceLastAccount, NO_ACCOUNTS); SharedPreferences.Editor editor = sharedPreferences.edit(); DeckLog.log("--- Remove: shared_preference_last_account" + " | " + createdAccount.getId()); - editor.remove(getString(R.string.shared_preference_last_account)); + editor.remove(sharedPreferenceLastAccount); editor.commit(); // Has to be done synchronously } else { accountIsGettingImportedSnackbar.show(); @@ -167,7 +187,7 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this)); setSupportActionBar(toolbar); - accountIsGettingImportedSnackbar = Snackbar.make(coordinatorLayout, getString(R.string.account_is_getting_imported), Snackbar.LENGTH_INDEFINITE); + accountIsGettingImportedSnackbar = Snackbar.make(coordinatorLayout, accountIsGettingImported, Snackbar.LENGTH_INDEFINITE); View header = navigationView.getHeaderView(0); headerViewHolder = new HeaderViewHolder(header); @@ -186,7 +206,7 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga syncManager.readAccounts().observe(this, (List<Account> accounts) -> { DeckLog.log("+++ readAccounts()"); accountsList = accounts; - long lastAccountId = sharedPreferences.getLong(getString(R.string.shared_preference_last_account), NO_ACCOUNTS); + long lastAccountId = sharedPreferences.getLong(sharedPreferenceLastAccount, NO_ACCOUNTS); DeckLog.log("--- Read: shared_preference_last_account" + " | " + lastAccountId); for (Account account : accounts) { @@ -283,7 +303,7 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga // Remember last account SharedPreferences.Editor editor = sharedPreferences.edit(); DeckLog.log("--- Write: shared_preference_last_account" + " | " + this.account.getId()); - editor.putLong(getString(R.string.shared_preference_last_account), this.account.getId()); + editor.putLong(sharedPreferenceLastAccount, this.account.getId()); editor.apply(); } } else { @@ -297,7 +317,7 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga startActivityForResult(settingsIntent, ACTIVITY_ABOUT); break; case MENU_ID_ADD_BOARD: - EditBoardDialogFragment.newInstance().show(getSupportFragmentManager(), getString(R.string.add_board)); + EditBoardDialogFragment.newInstance().show(getSupportFragmentManager(), addBoard); break; default: boardSelected(item.getItemId(), account); @@ -316,7 +336,7 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga protected void setNoAccountHeaderView() { ViewUtil.addAvatar(this, navigationView.getHeaderView(0).findViewById(R.id.drawer_current_account), null, "", R.mipmap.ic_launcher_round); - ((TextView) navigationView.getHeaderView(0).findViewById(R.id.drawer_username_full)).setText(getResources().getString(R.string.no_account)); + ((TextView) navigationView.getHeaderView(0).findViewById(R.id.drawer_username_full)).setText(noAccount); } private void buildSidenavAccountChooser() { @@ -362,7 +382,7 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga // Remember last account SharedPreferences.Editor editor = sharedPreferences.edit(); DeckLog.log("--- Write: shared_preference_last_account" + " | " + this.account.getId()); - editor.putLong(getString(R.string.shared_preference_last_account), this.account.getId()); + editor.putLong(sharedPreferenceLastAccount, this.account.getId()); editor.apply(); } else if (accountsList.size() > 1) { // Select second account after deletion this.account = accountsList.get(1); @@ -375,7 +395,7 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga // Remember last account SharedPreferences.Editor editor = sharedPreferences.edit(); DeckLog.log("--- Write: shared_preference_last_account" + " | " + this.account.getId()); - editor.putLong(getString(R.string.shared_preference_last_account), this.account.getId()); + editor.putLong(sharedPreferenceLastAccount, this.account.getId()); editor.apply(); } else { accountsList.clear(); @@ -388,7 +408,7 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga m.setActionView(contextMenu); } } - menu.add(Menu.NONE, MENU_ID_ADD_ACCOUNT, Menu.NONE, getString(R.string.add_account)).setIcon(R.drawable.ic_person_add_black_24dp); + menu.add(Menu.NONE, MENU_ID_ADD_ACCOUNT, Menu.NONE, addAccount).setIcon(R.drawable.ic_person_add_black_24dp); } abstract void buildSidenavMenu(); 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 01888bb2b..2f9965467 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 @@ -8,7 +8,6 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.widget.EditText; -import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; @@ -19,8 +18,8 @@ import com.google.android.material.textfield.TextInputLayout; import java.util.ArrayList; import java.util.Date; -import java.util.Objects; +import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; @@ -44,7 +43,6 @@ import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.NO_LOCAL_ID; public class EditActivity extends AppCompatActivity { SyncManager syncManager; - private ActionBar actionBar; @BindView(R.id.toolbar) Toolbar toolbar; @@ -57,6 +55,11 @@ public class EditActivity extends AppCompatActivity { @BindView(R.id.pager) ViewPager pager; + @BindString(R.string.simple_add) + String add; + @BindString(R.string.edit) + String edit; + private Unbinder unbinder; private boolean modified = false; @@ -80,7 +83,6 @@ public class EditActivity extends AppCompatActivity { unbinder = ButterKnife.bind(this); setSupportActionBar(toolbar); - actionBar = Objects.requireNonNull(getSupportActionBar()); Bundle extras = getIntent().getExtras(); if (extras != null) { @@ -156,7 +158,7 @@ public class EditActivity extends AppCompatActivity { private void setupViewPager() { tabLayout.removeAllTabs(); tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); - CardTabAdapter adapter = new CardTabAdapter(getSupportFragmentManager(), getResources(), accountId, localId, boardId, canEdit); + CardTabAdapter adapter = new CardTabAdapter(getSupportFragmentManager(), this, accountId, localId, boardId, canEdit); pager.setOffscreenPageLimit(2); pager.setAdapter(adapter); tabLayout.setupWithViewPager(pager); @@ -164,14 +166,14 @@ public class EditActivity extends AppCompatActivity { private void setupTitle(boolean createMode) { title.setText(fullCard.getCard().getTitle()); - if(canEdit) { - if(createMode) { + if (canEdit) { + if (createMode) { title.requestFocus(); - if(fullCard.getCard().getTitle() != null) { + if (fullCard.getCard().getTitle() != null) { title.setSelection(fullCard.getCard().getTitle().length()); } } - titleTextInputLayout.setHint(getString(createMode ? R.string.simple_add : R.string.edit)); + titleTextInputLayout.setHint(createMode ? add : edit); title.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { @@ -203,8 +205,6 @@ public class EditActivity extends AppCompatActivity { if (fullCard != null) { fullCard.getCard().setTitle(title); } - String prefix = NO_LOCAL_ID.equals(localId) ? getString(R.string.add_card) : getString(R.string.edit); - actionBar.setTitle(prefix + " " + title); modified = true; } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java index 45620fc80..51c5e2535 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java @@ -27,6 +27,7 @@ import com.h6ah4i.android.tablayouthelper.TabLayoutHelper; import java.util.List; import java.util.Objects; +import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.nextcloud.deck.Application; @@ -68,6 +69,25 @@ public class MainActivity extends DrawerActivity { @BindView(R.id.no_stacks) RelativeLayout noStacks; + @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_settings) + String simpleSettings; + @BindString(R.string.simple_boards) + String simpleBoards; + @BindString(R.string.about) + String about; + @BindString(R.string.share_board) + String shareBoard; + @BindString(R.string.edit_board) + String editBoard; + @BindString(R.string.add_column) + String addColumn; + @BindString(R.string.action_card_list_rename_column) + String actionCardListRenameColumn; + private StackAdapter stackAdapter; private List<Board> boardsList; private LiveData<List<Board>> boardsLiveData; @@ -113,10 +133,10 @@ public class MainActivity extends DrawerActivity { startActivity(intent); } catch (IndexOutOfBoundsException e) { EditStackDialogFragment.newInstance(NO_STACK_ID) - .show(getSupportFragmentManager(), getString(R.string.add_column)); + .show(getSupportFragmentManager(), addColumn); } } else { - EditBoardDialogFragment.newInstance().show(getSupportFragmentManager(), getString(R.string.add_board)); + EditBoardDialogFragment.newInstance().show(getSupportFragmentManager(), addBoard); } }); @@ -134,7 +154,7 @@ public class MainActivity extends DrawerActivity { long currentStackId = stackAdapter.getItem(position).getStackId(); SharedPreferences.Editor editor = sharedPreferences.edit(); DeckLog.log("--- Write: shared_preference_last_stack_for_account_and_board_" + account.getId() + "_" + currentBoardId + " | " + currentStackId); - editor.putLong(getString(R.string.shared_preference_last_stack_for_account_and_board) + account.getId() + "_" + currentBoardId, currentStackId); + editor.putLong(sharedPreferencesLastStackForAccountAndBoard_ + account.getId() + "_" + currentBoardId, currentStackId); editor.apply(); } }); @@ -190,13 +210,12 @@ public class MainActivity extends DrawerActivity { currentBoardId = board.getLocalId(); buildSidenavMenu(); - EditStackDialogFragment.newInstance(NO_STACK_ID) - .show(getSupportFragmentManager(), getString(R.string.add_column)); + EditStackDialogFragment.newInstance(NO_STACK_ID).show(getSupportFragmentManager(), addColumn); // Remember last board for this account SharedPreferences.Editor editor = sharedPreferences.edit(); DeckLog.log("--- Write: shared_preference_last_board_for_account_" + account.getId() + " | " + currentBoardId); - editor.putLong(getString(R.string.shared_preference_last_board_for_account_) + this.account.getId(), currentBoardId); + editor.putLong(sharedPreferencesLastBoardForAccount_ + this.account.getId(), currentBoardId); editor.apply(); } }); @@ -208,7 +227,7 @@ public class MainActivity extends DrawerActivity { @Override protected void accountSet(Account account) { - currentBoardId = sharedPreferences.getLong(getString(R.string.shared_preference_last_board_for_account_) + this.account.getId(), NO_BOARDS); + currentBoardId = sharedPreferences.getLong(sharedPreferencesLastBoardForAccount_ + this.account.getId(), NO_BOARDS); DeckLog.log("--- Read: shared_preference_last_board_for_account_" + account.getId() + " | " + currentBoardId); if (boardsLiveData != null && boardsLiveDataObserver != null) { @@ -232,7 +251,7 @@ public class MainActivity extends DrawerActivity { // Remember last board for this account SharedPreferences.Editor editor = sharedPreferences.edit(); DeckLog.log("--- Write: shared_preference_last_board_for_account_" + account.getId() + " | " + currentBoardId); - editor.putLong(getString(R.string.shared_preference_last_board_for_account_) + this.account.getId(), currentBoardId); + editor.putLong(sharedPreferencesLastBoardForAccount_ + this.account.getId(), currentBoardId); editor.apply(); } @@ -241,7 +260,7 @@ public class MainActivity extends DrawerActivity { navigationView.setItemIconTintList(null); Menu menu = navigationView.getMenu(); menu.clear(); - SubMenu boardsMenu = menu.addSubMenu(getString(R.string.simple_boards)); + SubMenu boardsMenu = menu.addSubMenu(simpleBoards); if (boardsList != null) { int index = 0; for (Board board : boardsList) { @@ -256,16 +275,16 @@ public class MainActivity extends DrawerActivity { popup.getMenuInflater() .inflate(R.menu.navigation_context_menu, popup.getMenu()); final int SHARE_BOARD_ID = -1; - if(board.isPermissionShare()) { + if (board.isPermissionShare()) { MenuItem shareItem = popup.getMenu().add(Menu.NONE, SHARE_BOARD_ID, 5, R.string.share_board); } popup.setOnMenuItemClickListener((MenuItem item) -> { switch (item.getItemId()) { case SHARE_BOARD_ID: - ShareBoardDialogFragment.newInstance(account.getId(), board.getLocalId()).show(getSupportFragmentManager(), getString(R.string.share_board)); + ShareBoardDialogFragment.newInstance(account.getId(), board.getLocalId()).show(getSupportFragmentManager(), shareBoard); break; case R.id.edit_board: - EditBoardDialogFragment.newInstance(account.getId(), board.getLocalId()).show(getSupportFragmentManager(), getString(R.string.edit_board)); + EditBoardDialogFragment.newInstance(account.getId(), board.getLocalId()).show(getSupportFragmentManager(), editBoard); break; case R.id.archive_board: // TODO implement @@ -283,7 +302,7 @@ public class MainActivity extends DrawerActivity { boardSelected(1, account); } else { // No other board is available, open create dialog Objects.requireNonNull(getSupportActionBar()).setTitle(R.string.app_name_short); - EditBoardDialogFragment.newInstance().show(getSupportFragmentManager(), getString(R.string.add_board)); + EditBoardDialogFragment.newInstance().show(getSupportFragmentManager(), addBoard); } } syncManager.deleteBoard(board); @@ -299,20 +318,20 @@ public class MainActivity extends DrawerActivity { popup.show(); }); m.setActionView(contextMenu); - } else if(board.isPermissionShare()) { + } else if (board.isPermissionShare()) { AppCompatImageButton contextMenu = new AppCompatImageButton(this); contextMenu.setBackgroundDrawable(null); contextMenu.setImageDrawable(ViewUtil.getTintedImageView(this, R.drawable.ic_share_grey600_18dp, R.color.grey600)); contextMenu.setOnClickListener((v) -> { - ShareBoardDialogFragment.newInstance(account.getId(), board.getLocalId()).show(getSupportFragmentManager(), getString(R.string.share_board)); + ShareBoardDialogFragment.newInstance(account.getId(), board.getLocalId()).show(getSupportFragmentManager(), shareBoard); }); m.setActionView(contextMenu); } } } - boardsMenu.add(Menu.NONE, MENU_ID_ADD_BOARD, Menu.NONE, getString(R.string.add_board)).setIcon(R.drawable.ic_add_grey_24dp); - menu.add(Menu.NONE, MENU_ID_SETTINGS, Menu.NONE, getString(R.string.simple_settings)).setIcon(R.drawable.ic_settings_grey600_24dp); - menu.add(Menu.NONE, MENU_ID_ABOUT, Menu.NONE, getString(R.string.about)).setIcon(R.drawable.ic_info_outline_grey_24dp); + boardsMenu.add(Menu.NONE, MENU_ID_ADD_BOARD, Menu.NONE, addBoard).setIcon(R.drawable.ic_add_grey_24dp); + menu.add(Menu.NONE, MENU_ID_SETTINGS, Menu.NONE, simpleSettings).setIcon(R.drawable.ic_settings_grey600_24dp); + menu.add(Menu.NONE, MENU_ID_ABOUT, Menu.NONE, about).setIcon(R.drawable.ic_info_outline_grey_24dp); if (currentBoardId == NO_BOARDS && boardsList.size() > 0) { Board currentBoard = boardsList.get(0); currentBoardId = currentBoard.getLocalId(); @@ -351,7 +370,7 @@ public class MainActivity extends DrawerActivity { noStacks.setVisibility(View.VISIBLE); currentBoardHasStacks = false; } else { - long savedStackId = sharedPreferences.getLong(getString(R.string.shared_preference_last_stack_for_account_and_board) + account.getId() + "_" + this.currentBoardId, NO_STACKS); + long savedStackId = sharedPreferences.getLong(sharedPreferencesLastStackForAccountAndBoard_ + account.getId() + "_" + this.currentBoardId, NO_STACKS); DeckLog.log("--- Read: shared_preference_last_stack_for_account_and_board" + account.getId() + "_" + this.currentBoardId + " | " + savedStackId); if (fullStacks.size() == 0) { noStacks.setVisibility(View.VISIBLE); @@ -387,7 +406,7 @@ public class MainActivity extends DrawerActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); - if(currentBoardHasEditPermission) { + if (currentBoardHasEditPermission) { inflater.inflate(R.menu.card_list_menu, menu); menu.findItem(R.id.action_card_list_rename_column).setVisible(currentBoardHasStacks); menu.findItem(R.id.action_card_list_delete_column).setVisible(currentBoardHasStacks); @@ -415,11 +434,11 @@ public class MainActivity extends DrawerActivity { break; case R.id.action_card_list_add_column: EditStackDialogFragment.newInstance(NO_STACK_ID) - .show(getSupportFragmentManager(), getString(R.string.add_column)); + .show(getSupportFragmentManager(), addColumn); break; case R.id.action_card_list_rename_column: EditStackDialogFragment.newInstance(stackAdapter.getItem(viewPager.getCurrentItem()).getStackId()) - .show(getSupportFragmentManager(), getString(R.string.action_card_list_rename_column)); + .show(getSupportFragmentManager(), actionCardListRenameColumn); break; } return super.onOptionsItemSelected(item); 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 88a4f18d8..adacda0e5 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 @@ -1,6 +1,5 @@ package it.niedermann.nextcloud.deck.ui.about; -import android.content.res.Resources; import android.graphics.Typeface; import android.os.Bundle; import android.text.Spannable; @@ -18,6 +17,7 @@ import androidx.fragment.app.Fragment; import java.util.Objects; +import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.nextcloud.deck.BuildConfig; @@ -39,24 +39,31 @@ public class AboutFragmentCreditsTab extends Fragment { @BindView(R.id.about_translators) TextView aboutTranslators; + @BindString(R.string.you_are_currently_offline) + String offlineText; + @BindString(R.string.strong_start) + String strongStart; + @BindString(R.string.strong_end) + String strongEnd; + @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); - LinkUtil.setHtml(aboutVersion, getString(R.string.about_version, getVersionStrongTag(getResources(), BuildConfig.VERSION_NAME))); + LinkUtil.setHtml(aboutVersion, getString(R.string.about_version, getVersionStrongTag(BuildConfig.VERSION_NAME))); SyncManager syncManager = new SyncManager(Objects.requireNonNull(getActivity())); try { syncManager.getServerVersion(new IResponseCallback<Capabilities>(null) { @Override public void onResponse(Capabilities response) { - Objects.requireNonNull(getActivity()).runOnUiThread(() -> LinkUtil.setHtml(aboutServerAppVersion, getVersionStrongTag(getResources(), response.getDeckVersion().toString()))); + Objects.requireNonNull(getActivity()).runOnUiThread(() -> LinkUtil.setHtml(aboutServerAppVersion, getVersionStrongTag(response.getDeckVersion().toString()))); } }); } catch (OfflineException e) { - Spannable offlineText = new SpannableString(getString(R.string.you_are_currently_offline)); - offlineText.setSpan(new StyleSpan(Typeface.ITALIC), 0, offlineText.length(), 0); - offlineText.setSpan(new ForegroundColorSpan(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.fg_secondary)), 0, offlineText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - aboutServerAppVersion.setText(offlineText); + Spannable offlineTextSpannable = new SpannableString(offlineText); + offlineTextSpannable.setSpan(new StyleSpan(Typeface.ITALIC), 0, offlineTextSpannable.length(), 0); + offlineTextSpannable.setSpan(new ForegroundColorSpan(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.fg_secondary)), 0, offlineTextSpannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + aboutServerAppVersion.setText(offlineTextSpannable); } LinkUtil.setHtml(aboutMaintainer, LinkUtil.concatenateResources(v.getResources(), R.string.anchor_start, R.string.url_maintainer, R.string.anchor_middle, R.string.about_maintainer, R.string.anchor_end)); @@ -67,10 +74,7 @@ public class AboutFragmentCreditsTab extends Fragment { return v; } - private static String getVersionStrongTag(Resources resources, String version) { - return resources.getString(R.string.strong_start) + - "v" + - version + - resources.getString(R.string.strong_end); + private String getVersionStrongTag(String version) { + return strongStart + "v" + version + strongEnd; } }
\ No newline at end of file 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 d06da58fb..3ab1ea2b1 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 @@ -13,6 +13,7 @@ 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; @@ -26,6 +27,11 @@ public class AboutFragmentLicenseTab extends Fragment { @BindView(R.id.about_app_license_button) Button appLicenseButton; + @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)))); @@ -36,21 +42,15 @@ public class AboutFragmentLicenseTab extends Fragment { View v = inflater.inflate(R.layout.fragment_about_license_tab, container, false); ButterKnife.bind(this, v); Resources resources = getResources(); - LinkUtil.setHtml(iconsDisclaimer, - resources.getString(R.string.paragraph_start), - resources.getString(R.string.about_icons_disclaimer, getAppIconHint(resources), getMdiLink(resources)), - resources.getString(R.string.paragraph_end) - ); + LinkUtil.setHtml(iconsDisclaimer, paragraphStart, resources.getString(R.string.about_icons_disclaimer, getAppIconHint(resources), getMdiLink(resources)), paragraphEnd); return v; } - private static String getAppIconHint(Resources resources) { - return LinkUtil.makeLink(resources, R.string.url_about_icon_author, R.string.about_app_icon_author_link_label) + - resources.getString(R.string.paragraph_end) + - resources.getString(R.string.paragraph_start); + private String getAppIconHint(Resources resources) { + return LinkUtil.makeLink(resources, R.string.url_about_icon_author, R.string.about_app_icon_author_link_label) + paragraphEnd + paragraphStart; } - private static String getMdiLink(Resources resources) { + private String getMdiLink(Resources resources) { return LinkUtil.makeLink(resources, R.string.url_about_icons_disclaimer_mdi, R.string.about_icons_disclaimer_mdi); } }
\ 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 630c0ba72..4a83a547a 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 @@ -16,6 +16,7 @@ import androidx.fragment.app.DialogFragment; import java.util.Objects; +import butterknife.BindColor; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.nextcloud.deck.Application; @@ -35,10 +36,12 @@ public class EditBoardDialogFragment extends DialogFragment { @BindView(R.id.input) EditText boardTitle; - @BindView(R.id.colorChooser) ColorChooser colorChooser; + @BindColor(R.color.board_default_color) + int boardDefaultColor; + /** * Use newInstance()-Method */ @@ -58,7 +61,7 @@ public class EditBoardDialogFragment extends DialogFragment { if (NO_BOARD_ID.equals(boardId)) { dialogBuilder.setTitle(R.string.add_board); dialogBuilder.setPositiveButton(R.string.simple_add, (dialog, which) -> ((MainActivity) getActivity()).onCreateBoard(boardTitle.getText().toString(), colorChooser.getSelectedColor())); - this.colorChooser.selectColor(String.format("#%06X", 0xFFFFFF & getResources().getColor(R.color.board_default_color))); + this.colorChooser.selectColor(String.format("#%06X", 0xFFFFFF & boardDefaultColor)); } else { dialogBuilder.setTitle(R.string.edit_board); dialogBuilder.setPositiveButton(R.string.simple_save, (dialog, which) -> { diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java index c5f928e9b..aaf53e5d2 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java @@ -34,7 +34,9 @@ import com.nextcloud.android.sso.model.SingleSignOnAccount; import java.util.LinkedList; import java.util.List; +import java.util.Objects; +import butterknife.BindInt; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.nextcloud.deck.DeckLog; @@ -53,7 +55,9 @@ import it.niedermann.nextcloud.deck.util.DimensionUtil; import it.niedermann.nextcloud.deck.util.ViewUtil; public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder> { + private static final String TAG = CardAdapter.class.getCanonicalName(); + public static final int REQUEST_CODE_START_EDIT_ACTIVITY = 100; public static final String BUNDLE_KEY_ACCOUNT_ID = "accountId"; public static final String BUNDLE_KEY_LOCAL_ID = "localId"; @@ -61,7 +65,6 @@ public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder public static final String BUNDLE_KEY_STACK_ID = "stackId"; public static final String BUNDLE_KEY_CAN_EDIT = "canEdit"; public static final Long NO_LOCAL_ID = -1L; - public static final int MAX_AVATAR_COUNT = 3; private Context context; private List<FullCard> cardList = new LinkedList<>(); @@ -73,7 +76,15 @@ public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder private Fragment fragment; private boolean pendingEditActivity = false; + @BindInt(R.integer.max_avatar_count) + int maxAvatarCount; + @BindInt(R.integer.max_labels_shown) + int maxLabelsShown; + @BindInt(R.integer.max_labels_chars) + int maxLabelsChars; + public CardAdapter(long boardId, boolean canEdit, @NonNull SyncManager syncManager, @NonNull Fragment fragment) { + ButterKnife.bind(this, Objects.requireNonNull(fragment.getActivity())); this.boardId = boardId; this.canEdit = canEdit; this.syncManager = syncManager; @@ -189,8 +200,6 @@ public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder } private void setupLabels(@NonNull ChipGroup labels, List<Label> labelList) { - int maxLabelsShown = context.getResources().getInteger(R.integer.max_labels_shown); - int maxLabelsChars = context.getResources().getInteger(R.integer.max_labels_chars); Chip chip; for (int i = 0; i < labelList.size(); i++) { if (i > maxLabelsShown - 1 && labelList.size() > maxLabelsShown) { @@ -249,7 +258,7 @@ public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder peopleList.removeAllViews(); RelativeLayout.LayoutParams avatarLayoutParams; int avatarCount; - for (avatarCount = 0; avatarCount < card.getAssignedUsers().size() && avatarCount < MAX_AVATAR_COUNT; avatarCount++) { + for (avatarCount = 0; avatarCount < card.getAssignedUsers().size() && avatarCount < maxAvatarCount; avatarCount++) { avatarLayoutParams = new RelativeLayout.LayoutParams(avatarSize, avatarSize); avatarLayoutParams.setMargins(0, 0, avatarCount * context.getResources().getDimensionPixelSize(R.dimen.avatar_overlapping_small), 0); avatarLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 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 f143e39ae..de6db9861 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 @@ -41,6 +41,7 @@ import java.util.Date; import java.util.Locale; import java.util.Objects; +import butterknife.BindDrawable; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; @@ -84,28 +85,24 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On @BindView(R.id.description) RxMDEditText 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() { } @@ -358,7 +355,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On Chip chip = new Chip(activity); chip.setText(label.getTitle()); if (canEdit) { - chip.setCloseIcon(activity.getResources().getDrawable(R.drawable.ic_close_circle_grey600)); + chip.setCloseIcon(closeCircleDrawable); chip.setCloseIconVisible(true); chip.setOnCloseIconClickListener(v -> { labelsGroup.removeView(chip); 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 76ed9af96..971abe6c9 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,25 +1,33 @@ package it.niedermann.nextcloud.deck.ui.card; -import android.content.res.Resources; +import android.app.Activity; 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 Resources resources; private long accountId; private long localId; private long boardId; private boolean canEdit; - public CardTabAdapter(FragmentManager fm, Resources resources, long accountId, long localId, long boardId, 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) { super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); - this.resources = resources; + ButterKnife.bind(this, activity); this.accountId = accountId; this.localId = localId; this.boardId = boardId; @@ -46,11 +54,11 @@ public class CardTabAdapter extends FragmentStatePagerAdapter { public CharSequence getPageTitle(int position) { switch (position) { case 0: - return this.resources.getString(R.string.card_edit_details); + return details; case 1: - return this.resources.getString(R.string.card_edit_attachments); + return attachments; case 2: - return this.resources.getString(R.string.card_edit_activity); + return activity; default: throw new IllegalArgumentException("position " + position + "is not available"); } 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 8b1fc9ce1..8bd7fc5c3 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 @@ -20,6 +20,9 @@ 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; @@ -39,18 +42,23 @@ public class LabelAutoCompleteAdapter extends BaseAdapter implements Filterable private long cardId; private LifecycleOwner owner; private Label createLabel; - private String createLabelText; private String lastFilterText; private boolean canManage = false; - private int maxLabelsSuggested; + + @BindInt(R.integer.max_labels_suggested) + int maxLabelsSuggested; + @BindString(R.string.label_add) + String createLabelText; + @BindColor(R.color.grey600) + int createLabelColor; public 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; this.boardId = boardId; this.cardId = cardId; - this.maxLabelsSuggested = activity.getResources().getInteger(R.integer.max_labels_suggested); syncManager = new SyncManager(activity); syncManager.getFullBoardById(accountId, boardId).observe(owner, (fullBoard) -> { if (fullBoard.getBoard().isPermissionManage()) { @@ -58,8 +66,7 @@ public class LabelAutoCompleteAdapter extends BaseAdapter implements Filterable createLabel.setLocalId(CREATE_ID); createLabel.setBoardId(boardId); createLabel.setAccountId(accountId); - createLabelText = activity.getResources().getString(R.string.label_add); - createLabel.setColor("757575"); + createLabel.setColor(Integer.toHexString(createLabelColor)); canManage = true; } }); 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 a71158522..d59316392 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 @@ -25,6 +25,7 @@ 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; @@ -42,14 +43,16 @@ public class UserAutoCompleteAdapter extends BaseAdapter implements Filterable { private long accountId; private long cardId; private LifecycleOwner owner; - private int maxUsersSuggested; + + @BindInt(R.integer.max_users_suggested) + int maxUsersSuggested; public UserAutoCompleteAdapter(@NonNull LifecycleOwner owner, Activity activity, long accountId, long cardId) { + ButterKnife.bind(this, activity); this.owner = owner; this.activity = activity; this.accountId = accountId; this.cardId = cardId; - this.maxUsersSuggested = activity.getResources().getInteger(R.integer.max_users_suggested); syncManager = new SyncManager(activity); } 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 5b558e304..f121a89b4 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 @@ -14,6 +14,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.util.Objects; +import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; @@ -30,6 +31,12 @@ public class ExceptionActivity extends AppCompatActivity { 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; public static final String KEY_THROWABLE = "T"; @@ -41,7 +48,7 @@ public class ExceptionActivity extends AppCompatActivity { throwable = ((Throwable) getIntent().getSerializableExtra(KEY_THROWABLE)); throwable.printStackTrace(); setSupportActionBar(toolbar); - Objects.requireNonNull(getSupportActionBar()).setTitle(getString(R.string.error)); + Objects.requireNonNull(getSupportActionBar()).setTitle(title); this.message.setText(throwable.getMessage()); this.stacktrace.setText("Version: " + BuildConfig.VERSION_NAME + "\n\n" + getStacktraceOf(throwable)); } @@ -56,9 +63,9 @@ public class ExceptionActivity extends AppCompatActivity { @OnClick(R.id.copy) void copyStacktraceToClipboard() { final android.content.ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); - ClipData clipData = ClipData.newPlainText(getString(R.string.simple_exception), this.stacktrace.getText()); + ClipData clipData = ClipData.newPlainText(exception, this.stacktrace.getText()); clipboardManager.setPrimaryClip(clipData); - Toast.makeText(this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show(); + Toast.makeText(this, copiedToClipboard, Toast.LENGTH_SHORT).show(); } @OnClick(R.id.close) 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 002a0e6ae..e8f076cb6 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 @@ -14,6 +14,8 @@ import java.util.HashSet; import java.util.List; 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; @@ -30,22 +32,28 @@ public class CrossTabDragAndDrop { private final Activity activity; private final float pxToReact; - private final long msToReact; - private final long msToReactOnMove; 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 = 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; - this.msToReact = activity.getResources().getInteger(R.integer.drag_n_drop_ms_to_react); - this.msToReactOnMove = activity.getResources().getInteger(R.integer.drag_n_drop_ms_to_react_on_move); + this.pxToReact = dragAndDropDPtoReact * density; + this.pxToReactTopBottom = dragAndDropDPtoReactTopBottom * density; } public void register(final ViewPager viewPager) { 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 120d619bf..bf9e13213 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 @@ -8,24 +8,35 @@ 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; public class SettingsFragment extends PreferenceFragment { + + @BindString(R.string.pref_key_wifi_only) + String prefKeyWifiOnly; + @BindString(R.string.pref_key_dark_theme) + String prefKeyDarkTheme; + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + ButterKnife.bind(this, getActivity()); + addPreferencesFromResource(R.xml.settings); - final SwitchPreference wifiOnlyPref = (SwitchPreference) findPreference(getString(R.string.pref_key_wifi_only)); + final SwitchPreference wifiOnlyPref = (SwitchPreference) findPreference(prefKeyWifiOnly); wifiOnlyPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { Boolean syncOnWifiOnly = (Boolean) newValue; DeckLog.log("syncOnWifiOnly: " + syncOnWifiOnly); return true; }); - final SwitchPreference themePref = (SwitchPreference) findPreference(getString(R.string.pref_key_dark_theme)); + final SwitchPreference themePref = (SwitchPreference) findPreference(prefKeyDarkTheme); themePref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { Boolean darkTheme = (Boolean) newValue; DeckLog.log("darkTheme: " + darkTheme); diff --git a/app/src/main/res/values/customization.xml b/app/src/main/res/values/customization.xml index 695b0d22d..444c6759e 100644 --- a/app/src/main/res/values/customization.xml +++ b/app/src/main/res/values/customization.xml @@ -1,5 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <resources> + <!-- How many avatars should be displayed in the card list view --> + <integer name="max_avatar_count">3</integer> <!-- How many labels are shown in the card list view before "..." --> <integer name="max_labels_shown">3</integer> <!-- How many characters of the labels are displayed at the card list view --> diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml index 66aa2cefb..4da70f773 100644 --- a/app/src/main/res/values/setup.xml +++ b/app/src/main/res/values/setup.xml @@ -8,7 +8,7 @@ <!-- To be concatenated with the account id --> <string name="shared_preference_last_board_for_account_" translatable="false">it.niedermann.nextcloud.deck.last_board_for_account_</string> - <string name="shared_preference_last_stack_for_account_and_board" translatable="false">it.niedermann.nextcloud.deck.last_stack_for_board_</string> + <string name="shared_preference_last_stack_for_account_and_board_" translatable="false">it.niedermann.nextcloud.deck.last_stack_for_board_</string> <integer name="minimum_server_app_major" translatable="false">0</integer> <integer name="minimum_server_app_minor" translatable="false">6</integer> <integer name="minimum_server_app_patch" translatable="false">4</integer> |