Migration from databinding to viewbinding

This commit is contained in:
Shinokuni 2020-07-13 19:23:02 +02:00
parent c968c53441
commit 2bc5438348
31 changed files with 1009 additions and 1013 deletions

View File

@ -47,7 +47,7 @@ android {
}
buildFeatures {
dataBinding = true
viewBinding true
}
}

View File

@ -11,7 +11,6 @@ import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -19,11 +18,11 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.afollestad.materialdialogs.MaterialDialog;
import com.readrops.app.R;
import com.readrops.app.adapters.AccountTypeListAdapter;
import com.readrops.readropsdb.entities.account.Account;
import com.readrops.readropsdb.entities.account.AccountType;
import com.readrops.app.databinding.ActivityAccountTypeListBinding;
import com.readrops.app.utils.Utils;
import com.readrops.app.viewmodels.AccountViewModel;
import com.readrops.readropsdb.entities.account.Account;
import com.readrops.readropsdb.entities.account.AccountType;
import java.util.ArrayList;
import java.util.List;
@ -52,7 +51,9 @@ public class AccountTypeListActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_account_type_list);
binding = ActivityAccountTypeListBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
viewModel = ViewModelProviders.of(this).get(AccountViewModel.class);
setTitle(R.string.new_account);

View File

@ -8,16 +8,15 @@ import android.view.MenuItem;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProviders;
import com.readrops.app.R;
import com.readrops.readropsdb.entities.account.Account;
import com.readrops.readropsdb.entities.account.AccountType;
import com.readrops.app.databinding.ActivityAddAccountBinding;
import com.readrops.app.utils.SharedPreferencesManager;
import com.readrops.app.utils.Utils;
import com.readrops.app.viewmodels.AccountViewModel;
import com.readrops.readropsdb.entities.account.Account;
import com.readrops.readropsdb.entities.account.AccountType;
import io.reactivex.Completable;
import io.reactivex.CompletableObserver;
@ -44,7 +43,9 @@ public class AddAccountActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_add_account);
binding = ActivityAddAccountBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
viewModel = ViewModelProviders.of(this).get(AccountViewModel.class);
accountType = getIntent().getParcelableExtra(ACCOUNT_TYPE);

View File

@ -12,7 +12,6 @@ import android.view.View;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.ItemTouchHelper;
@ -63,7 +62,9 @@ public class AddFeedActivity extends AppCompatActivity implements View.OnClickLi
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_add_feed);
binding = ActivityAddFeedBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.addFeedLoad.setOnClickListener(this);
binding.addFeedOk.setOnClickListener(this);

View File

@ -6,7 +6,6 @@ import android.view.MenuItem;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
@ -14,13 +13,13 @@ import androidx.lifecycle.ViewModelProviders;
import com.afollestad.materialdialogs.MaterialDialog;
import com.readrops.app.R;
import com.readrops.readropsdb.entities.Folder;
import com.readrops.readropsdb.entities.account.Account;
import com.readrops.app.databinding.ActivityManageFeedsFoldersBinding;
import com.readrops.app.fragments.FeedsFragment;
import com.readrops.app.fragments.FoldersFragment;
import com.readrops.app.utils.Utils;
import com.readrops.app.viewmodels.ManageFeedsFoldersViewModel;
import com.readrops.readropsdb.entities.Folder;
import com.readrops.readropsdb.entities.account.Account;
import com.readrops.readropslibrary.utils.ConflictException;
import com.readrops.readropslibrary.utils.UnknownFormatException;
@ -31,7 +30,6 @@ import static com.readrops.app.utils.ReadropsKeys.ACCOUNT;
public class ManageFeedsFoldersActivity extends AppCompatActivity {
private ActivityManageFeedsFoldersBinding binding;
private ManageFeedsFoldersViewModel viewModel;
@ -41,7 +39,9 @@ public class ManageFeedsFoldersActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_manage_feeds_folders);
binding = ActivityManageFeedsFoldersBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setSupportActionBar(binding.manageFeedsFoldersToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

View File

@ -5,7 +5,6 @@ import android.os.Bundle
import android.view.MenuItem
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.afollestad.materialdialogs.MaterialDialog
@ -34,7 +33,8 @@ class NotificationPermissionActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_notification_permission)
binding = ActivityNotificationPermissionBinding.inflate(layoutInflater)
setContentView(binding.root)
setTitle(R.string.notifications)
supportActionBar?.setDisplayHomeAsUpEnabled(true)

View File

@ -47,5 +47,12 @@ public class SplashActivity extends AppCompatActivity {
}
});
/*PeriodicWorkRequest request = new PeriodicWorkRequest.Builder(SyncWorker.class, 15, TimeUnit.MINUTES)
.addTag(SyncWorker.Companion.getTAG())
.build();
WorkManager.getInstance(this).enqueueUniquePeriodicWork(SyncWorker.Companion.getTAG(), ExistingPeriodicWorkPolicy.REPLACE, request);*/
}
}

View File

@ -2,22 +2,22 @@ package com.readrops.app.activities
import android.annotation.SuppressLint
import android.content.Intent
import android.content.res.ColorStateList
import android.graphics.Bitmap
import android.graphics.PorterDuff
import android.graphics.drawable.ColorDrawable
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.webkit.*
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.databinding.DataBindingUtil
import com.readrops.app.R
import com.readrops.app.databinding.ActivityWebViewBinding
import com.readrops.app.utils.ReadropsKeys
import com.readrops.app.utils.ReadropsKeys.ACTION_BAR_COLOR
import com.readrops.app.utils.ReadropsKeys.WEB_URL
class WebViewActivity : AppCompatActivity() {
@ -25,21 +25,26 @@ class WebViewActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_web_view)
binding = ActivityWebViewBinding.inflate(layoutInflater)
setContentView(binding.root)
setSupportActionBar(binding.activityWebViewToolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
title = ""
val actionBarColor = intent.getIntExtra(ACTION_BAR_COLOR, ContextCompat.getColor(this, R.color.colorPrimary))
supportActionBar?.setBackgroundDrawable(ColorDrawable(actionBarColor))
setWebViewSettings()
binding.activityWebViewSwipe.setOnRefreshListener { binding.webView.reload() }
binding.activityWebViewProgress.indeterminateDrawable.setColorFilter(actionBarColor, PorterDuff.Mode.SRC_IN)
binding.activityWebViewProgress.max = 100
with(binding) {
activityWebViewSwipe.setOnRefreshListener { binding.webView.reload() }
activityWebViewProgress.progressTintList = ColorStateList.valueOf(actionBarColor)
activityWebViewProgress.max = 100
val url: String = intent.getStringExtra(ReadropsKeys.WEB_URL)!!
webView.loadUrl(url)
}
val url: String = intent.getStringExtra(WEB_URL)
binding.webView.loadUrl(url)
}
@SuppressLint("SetJavaScriptEnabled")
@ -56,9 +61,11 @@ class WebViewActivity : AppCompatActivity() {
}
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
binding.activityWebViewSwipe.isRefreshing = false
binding.activityWebViewProgress.progress = 0
binding.activityWebViewProgress.visibility = View.VISIBLE
with(binding) {
activityWebViewSwipe.isRefreshing = false
activityWebViewProgress.progress = 0
activityWebViewProgress.visibility = View.VISIBLE
}
super.onPageStarted(view, url, favicon)
}
@ -73,9 +80,11 @@ class WebViewActivity : AppCompatActivity() {
}
override fun onProgressChanged(view: WebView?, newProgress: Int) {
binding.activityWebViewProgress.progress = newProgress
if (newProgress == 100)
binding.activityWebViewProgress.visibility = View.GONE
with(binding) {
activityWebViewProgress.progress = newProgress
if (newProgress == 100) activityWebViewProgress.visibility = View.GONE
}
super.onProgressChanged(view, newProgress)
}
@ -106,13 +115,15 @@ class WebViewActivity : AppCompatActivity() {
}
}
return super.onOptionsItemSelected(item)
return super.onOptionsItemSelected(item!!)
}
private fun shareLink() {
val intent = Intent(Intent.ACTION_SEND)
intent.type = "text/plain"
intent.putExtra(Intent.EXTRA_TEXT, binding.webView.url.toString())
val intent = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, binding.webView.url.toString())
}
startActivity(Intent.createChooser(intent, getString(R.string.share_url)))
}

View File

@ -20,11 +20,8 @@ public class AccountArrayAdapter extends ArrayAdapter<Account> {
public AccountArrayAdapter(@NonNull Context context, @NonNull List<Account> objects) {
super(context, 0, objects);
}
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
return createItemView(position, convertView, parent);
@ -46,8 +43,8 @@ public class AccountArrayAdapter extends ArrayAdapter<Account> {
ImageView accountIcon = convertView.findViewById(R.id.account_type_logo);
TextView accountName = convertView.findViewById(R.id.account_type_name);
accountIcon.setImageResource(account.getAccountType().getIconRes());
accountName.setText(account.getAccountType().getName());
accountIcon.setImageResource(account.getAccountType().getIconRes());
accountName.setText(account.getAccountType().getName());
return convertView;
}

View File

@ -4,12 +4,10 @@ import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.readrops.app.R;
import com.readrops.readropsdb.entities.account.AccountType;
import com.readrops.app.databinding.AccountTypeItemBinding;
import com.readrops.readropsdb.entities.account.AccountType;
import java.util.List;
@ -25,8 +23,8 @@ public class AccountTypeListAdapter extends RecyclerView.Adapter<AccountTypeList
@NonNull
@Override
public AccountTypeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
AccountTypeItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),
R.layout.account_type_item, parent, false);
AccountTypeItemBinding binding = AccountTypeItemBinding.inflate(LayoutInflater.from(parent.getContext()),
parent, false);
return new AccountTypeViewHolder(binding);
}

View File

@ -6,15 +6,14 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.ListAdapter;
import androidx.recyclerview.widget.RecyclerView;
import com.readrops.app.R;
import com.readrops.app.databinding.FolderLayoutBinding;
import com.readrops.readropsdb.entities.Folder;
import com.readrops.readropsdb.pojo.FolderWithFeedCount;
import com.readrops.app.databinding.FolderLayoutBinding;
import java.util.List;
@ -55,8 +54,8 @@ public class FoldersAdapter extends ListAdapter<FolderWithFeedCount, FoldersAdap
@NonNull
@Override
public FolderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
FolderLayoutBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),
R.layout.folder_layout, parent, false);
FolderLayoutBinding binding = FolderLayoutBinding.inflate(LayoutInflater.from(parent.getContext()),
parent, false);
return new FolderViewHolder(binding);
}

View File

@ -2,14 +2,12 @@ package com.readrops.app.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.readrops.app.R
import com.readrops.app.databinding.NotificationPermissionLayoutBinding
import com.readrops.app.databinding.NotificationPermissionLayoutBindingImpl
import com.readrops.app.utils.GlideApp
import com.readrops.readropsdb.entities.Feed
@ -17,8 +15,7 @@ class NotificationPermissionListAdapter(var enableAll: Boolean, val listener: (f
ListAdapter<Feed, NotificationPermissionListAdapter.NotificationPermissionViewHolder>(DIFF_CALLBACK) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NotificationPermissionViewHolder {
val binding = DataBindingUtil.inflate<NotificationPermissionLayoutBinding>(LayoutInflater.from(parent.context),
R.layout.notification_permission_layout, parent, false)
val binding = NotificationPermissionLayoutBinding.inflate(LayoutInflater.from(parent.context))
return NotificationPermissionViewHolder(binding)
}

View File

@ -6,19 +6,19 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.readrops.app.R
import com.readrops.readropsdb.entities.account.Account
import com.readrops.readropsdb.pojo.FeedWithFolder
import com.readrops.app.databinding.FeedOptionsLayoutBinding
import com.readrops.app.utils.ReadropsKeys.ACCOUNT
import com.readrops.readropsdb.entities.account.Account
import com.readrops.readropsdb.pojo.FeedWithFolder
class FeedOptionsDialogFragment : BottomSheetDialogFragment() {
private lateinit var feedWithFolder: FeedWithFolder
private lateinit var account: Account
private lateinit var binding: FeedOptionsLayoutBinding
private var _binding: FeedOptionsLayoutBinding? = null
private val binding get() = _binding!!
companion object {
const val FEED_KEY = "FEED_KEY"
@ -43,7 +43,7 @@ class FeedOptionsDialogFragment : BottomSheetDialogFragment() {
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.feed_options_layout, container, false)
_binding = FeedOptionsLayoutBinding.inflate(inflater, container, false)
return binding.root
}
@ -58,6 +58,11 @@ class FeedOptionsDialogFragment : BottomSheetDialogFragment() {
binding.feedOptionsDeleteLayout.setOnClickListener { deleteFeed() }
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun openEditFeedDialog() {
dismiss()
val editFeedDialogFragment = EditFeedDialogFragment.newInstance(feedWithFolder, account)

View File

@ -16,13 +16,13 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.afollestad.materialdialogs.MaterialDialog;
import com.readrops.app.R;
import com.readrops.app.adapters.FeedsAdapter;
import com.readrops.readropsdb.entities.Feed;
import com.readrops.readropsdb.entities.account.Account;
import com.readrops.readropsdb.pojo.FeedWithFolder;
import com.readrops.app.databinding.FragmentFeedsBinding;
import com.readrops.app.utils.SharedPreferencesManager;
import com.readrops.app.utils.Utils;
import com.readrops.app.viewmodels.ManageFeedsFoldersViewModel;
import com.readrops.readropsdb.entities.Feed;
import com.readrops.readropsdb.entities.account.Account;
import com.readrops.readropsdb.pojo.FeedWithFolder;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.observers.DisposableCompletableObserver;
@ -81,7 +81,7 @@ public class FeedsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentFeedsBinding.inflate(inflater);
binding = FragmentFeedsBinding.inflate(inflater, container, false);
return binding.getRoot();
}
@ -107,6 +107,12 @@ public class FeedsFragment extends Fragment {
binding.feedsRecyclerview.setAdapter(adapter);
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
public void deleteFeed(Feed feed) {
new MaterialDialog.Builder(getContext())
.title(R.string.delete_feed)

View File

@ -4,16 +4,51 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.readrops.app.R
import com.readrops.readropsdb.entities.Folder
import com.readrops.app.databinding.FolderOptionsLayoutBinding
import com.readrops.readropsdb.entities.Folder
class FolderOptionsDialogFragment : BottomSheetDialogFragment() {
private lateinit var folder: Folder
private lateinit var foldersOptionsLayoutBinding: FolderOptionsLayoutBinding
private var _binding: FolderOptionsLayoutBinding? = null
private val binding get() = _binding!!
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
folder = arguments?.getParcelable(FOLDER_KEY)!!
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_binding = FolderOptionsLayoutBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.folderOptionsTitle.text = folder.name
binding.folderOptionsEdit.setOnClickListener { openEditFolderDialog() }
binding.folderOptionsDelete.setOnClickListener { deleteFolder() }
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun openEditFolderDialog() {
dismiss()
(parentFragment as FoldersFragment).editFolder(folder)
}
private fun deleteFolder() {
dismiss()
(parentFragment as FoldersFragment).deleteFolder(folder)
}
companion object {
const val FOLDER_KEY = "FOLDER_KEY"
@ -28,34 +63,4 @@ class FolderOptionsDialogFragment : BottomSheetDialogFragment() {
return fragment
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
folder = arguments?.getParcelable(FOLDER_KEY)!!
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
foldersOptionsLayoutBinding = DataBindingUtil.inflate(inflater, R.layout.folder_options_layout, container, false)
return foldersOptionsLayoutBinding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
foldersOptionsLayoutBinding.folderOptionsTitle.text = folder.name
foldersOptionsLayoutBinding.folderOptionsEdit.setOnClickListener { openEditFolderDialog() }
foldersOptionsLayoutBinding.folderOptionsDelete.setOnClickListener { deleteFolder() }
}
private fun openEditFolderDialog() {
dismiss()
(parentFragment as FoldersFragment).editFolder(folder)
}
private fun deleteFolder() {
dismiss()
(parentFragment as FoldersFragment).deleteFolder(folder)
}
}

View File

@ -9,7 +9,6 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -17,12 +16,12 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.afollestad.materialdialogs.MaterialDialog;
import com.readrops.app.R;
import com.readrops.app.adapters.FoldersAdapter;
import com.readrops.readropsdb.entities.Folder;
import com.readrops.readropsdb.entities.account.Account;
import com.readrops.app.databinding.FragmentFoldersBinding;
import com.readrops.app.utils.SharedPreferencesManager;
import com.readrops.app.utils.Utils;
import com.readrops.app.viewmodels.ManageFeedsFoldersViewModel;
import com.readrops.readropsdb.entities.Folder;
import com.readrops.readropsdb.entities.account.Account;
import com.readrops.readropslibrary.utils.ConflictException;
import com.readrops.readropslibrary.utils.UnknownFormatException;
@ -101,7 +100,7 @@ public class FoldersFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_folders, container, false);
binding = FragmentFoldersBinding.inflate(inflater, container, false);
return binding.getRoot();
}

View File

@ -1,30 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<RelativeLayout
android:layout_width="match_parent"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:padding="8dp">
<ImageView
android:id="@+id/account_type_logo"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
tools:src="@drawable/ic_nextcloud_news" />
<TextView
android:id="@+id/account_type_name"
style="@style/TextAppearance.AppCompat.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:padding="8dp">
android:layout_centerInParent="true"
android:layout_marginStart="12dp"
android:layout_toEndOf="@id/account_type_logo"
tools:text="@string/nextcloud_news" />
<ImageView
android:id="@+id/account_type_logo"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
tools:src="@drawable/ic_nextcloud_news" />
</RelativeLayout>
<TextView
android:id="@+id/account_type_name"
style="@style/TextAppearance.AppCompat.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="12dp"
android:layout_toEndOf="@id/account_type_logo"
tools:text="@string/nextcloud_news" />
</RelativeLayout>
</layout>

View File

@ -1,81 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.AccountTypeListActivity">
<androidx.core.widget.NestedScrollView
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/account_type_list_root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/account_type_list_root"
<TextView
android:id="@+id/account_type_list_app_name"
style="@style/TextAppearance.AppCompat.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/app_name"
android:textSize="60sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/account_type_list_choose"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="@string/choose_account"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/account_type_list_app_name" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/account_type_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:layout_marginStart="80dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="80dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/account_type_list_choose"
tools:itemCount="4"
tools:listitem="@layout/account_type_item" />
<TextView
android:id="@+id/account_type_list_app_name"
style="@style/TextAppearance.AppCompat.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/app_name"
android:textSize="60sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/account_type_or"
style="@style/TextAppearance.AppCompat.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/or"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/account_type_recyclerview" />
<TextView
android:id="@+id/account_type_list_choose"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="@string/choose_account"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/account_type_list_app_name" />
<Button
android:id="@+id/account_type_opml_import"
style="@style/GenericButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="openOPMLFile"
android:text="@string/opml_import"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/account_type_or" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/account_type_recyclerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="80dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="80dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/account_type_list_choose"
tools:itemCount="4"
tools:listitem="@layout/account_type_item" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/account_type_or"
style="@style/TextAppearance.AppCompat.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/or"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/account_type_recyclerview" />
<Button
android:id="@+id/account_type_opml_import"
style="@style/GenericButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/opml_import"
android:onClick="openOPMLFile"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/account_type_or" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</androidx.core.widget.NestedScrollView>
</layout>

View File

@ -1,132 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.AddAccountActivity">
<androidx.core.widget.NestedScrollView
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/add_account_root"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/add_account_root"
<ImageView
android:id="@+id/provider_image"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginTop="60dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_nextcloud_news" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/provider_name">
<ImageView
android:id="@+id/provider_image"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginTop="60dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_nextcloud_news" />
<RelativeLayout
<Button
android:id="@+id/add_account_validate"
style="@style/GenericButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/provider_name">
android:layout_below="@id/add_account_password_layout"
android:layout_marginTop="12dp"
android:onClick="createAccount"
android:text="@string/validate" />
<Button
android:id="@+id/add_account_validate"
style="@style/GenericButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/add_account_password_layout"
android:layout_marginTop="12dp"
android:onClick="createAccount"
android:text="@string/validate" />
<ProgressBar
android:id="@+id/add_account_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/add_account_validate"
android:layout_centerInParent="true"
android:visibility="gone"
tools:visibility="visible" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/add_account_login_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/add_account_name_layout"
android:layout_marginTop="12dp"
android:hint="@string/login">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/add_account_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/add_account_password_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/add_account_login_layout"
android:layout_marginTop="12dp"
android:hint="@string/password"
app:passwordToggleEnabled="true"
app:passwordToggleTintMode="src_atop">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/add_account_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/add_account_url_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/account_url">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/add_account_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/add_account_name_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/add_account_url_layout"
android:layout_marginTop="12dp"
android:hint="@string/account_name">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/add_account_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
</RelativeLayout>
<TextView
android:id="@+id/provider_name"
style="@style/TextAppearance.AppCompat.Large"
<ProgressBar
android:id="@+id/add_account_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/provider_image"
tools:text="@string/nextcloud_news" />
android:layout_below="@id/add_account_validate"
android:layout_centerInParent="true"
android:visibility="gone"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/add_account_login_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/add_account_name_layout"
android:layout_marginTop="12dp"
android:hint="@string/login">
</androidx.core.widget.NestedScrollView>
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/add_account_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/add_account_password_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/add_account_login_layout"
android:layout_marginTop="12dp"
android:hint="@string/password"
app:passwordToggleEnabled="true"
app:passwordToggleTintMode="src_atop">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/add_account_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/add_account_url_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/account_url">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/add_account_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/add_account_name_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/add_account_url_layout"
android:layout_marginTop="12dp"
android:hint="@string/account_name">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/add_account_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
</RelativeLayout>
<TextView
android:id="@+id/provider_name"
style="@style/TextAppearance.AppCompat.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/provider_image"
tools:text="@string/nextcloud_news" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</layout>

View File

@ -1,167 +1,165 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/add_feed_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.AddFeedActivity">
<androidx.core.widget.NestedScrollView
android:id="@+id/add_feed_root"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:animateLayoutChanges="true">
<Spinner
android:id="@+id/add_feed_account_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/account_type_item" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/add_feed_main_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/add_feed_account_spinner">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/add_feed_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@id/add_feed_load"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/add_feed_text_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_cancel_grey"
android:hint="@string/feed_url"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/add_feed_load"
style="@style/GenericButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginTop="4dp"
android:text="@string/load"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/add_feed_input_layout"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/add_feed_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_feed_input_layout"
tools:visibility="gone" />
<TextView
android:id="@+id/add_feed_loading_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/add_feed_input_layout"
tools:text="No feed found"
tools:visibility="visible" />
<TextView
android:id="@+id/add_feed_results_text_view"
style="@style/TextAppearance.Design.Hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/results"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_feed_loading"
tools:visibility="visible" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/add_feed_results"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_feed_results_text_view"
tools:itemCount="2"
tools:listitem="@layout/add_feed_item"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true">
android:paddingStart="16dp"
android:paddingEnd="16dp"
app:layout_constraintTop_toBottomOf="@id/add_feed_main_layout">
<Spinner
android:id="@+id/add_feed_account_spinner"
<Button
android:id="@+id/add_feed_ok"
style="@style/GenericButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="true"
android:text="@string/validate"
android:textColor="@color/generic_button_color_selector"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.6"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/add_feed_insert_progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/account_type_item" />
app:layout_constraintTop_toBottomOf="@+id/add_feed_ok"
tools:visibility="gone" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/add_feed_main_layout"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/add_feed_inserted_results_recyclerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:layout_marginTop="8dp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.6"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/add_feed_account_spinner"
android:padding="16dp">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/add_feed_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/add_feed_load">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/add_feed_text_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_cancel_grey"
android:hint="@string/feed_url"
android:inputType="text"/>
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/add_feed_load"
style="@style/GenericButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginStart="6dp"
android:text="@string/load"
app:layout_constraintStart_toEndOf="@id/add_feed_input_layout"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<ProgressBar
android:id="@+id/add_feed_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_feed_input_layout"
tools:visibility="gone" />
<TextView
android:id="@+id/add_feed_loading_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/add_feed_input_layout"
tools:visibility="visible"
tools:text="No feed found" />
<TextView
android:id="@+id/add_feed_results_text_view"
style="@style/TextAppearance.Design.Hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/results"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_feed_loading"
tools:visibility="visible" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/add_feed_results"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_feed_results_text_view"
tools:visibility="visible"
tools:listitem="@layout/add_feed_item"
tools:itemCount="2"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toBottomOf="@id/add_feed_main_layout"
android:paddingStart="16dp"
android:paddingEnd="16dp">
<Button
android:id="@+id/add_feed_ok"
style="@style/GenericButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="true"
android:text="@string/validate"
android:textColor="@color/generic_button_color_selector"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.6"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/add_feed_insert_progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_feed_ok"
tools:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/add_feed_inserted_results_recyclerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.6"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add_feed_insert_progressbar"
tools:visibility="visible"
tools:listitem="@layout/feed_insertion_result"
tools:itemCount="2"/>
</androidx.constraintlayout.widget.ConstraintLayout>
app:layout_constraintTop_toBottomOf="@+id/add_feed_insert_progressbar"
tools:itemCount="2"
tools:listitem="@layout/feed_insertion_result"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</layout>

View File

@ -1,41 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activities.ManageFeedsFoldersActivity">
tools:context=".activities.ManageFeedsFoldersActivity"
android:id="@+id/manage_feeds_folders_root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/manage_feeds_folders_root"
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<com.google.android.material.appbar.AppBarLayout
<androidx.appcompat.widget.Toolbar
android:id="@+id/manage_feeds_folders_toolbar"
style="@style/ToolbarTheme"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" />
<androidx.appcompat.widget.Toolbar
android:id="@+id/manage_feeds_folders_toolbar"
style="@style/ToolbarTheme"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/manage_feeds_folders_tablayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:tabIndicator="@drawable/tab_indicator"
app:tabIndicatorColor="@android:color/white"
app:tabIndicatorHeight="4dp" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/manage_feeds_folders_viewpager"
<com.google.android.material.tabs.TabLayout
android:id="@+id/manage_feeds_folders_tablayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
app:tabIndicator="@drawable/tab_indicator"
app:tabIndicatorColor="@android:color/white"
app:tabIndicatorHeight="4dp" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/manage_feeds_folders_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,87 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.readrops.app.activities.NotificationPermissionActivity">
<androidx.core.widget.NestedScrollView
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
<RelativeLayout
android:id="@+id/notif_permission_account_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:background="@color/md_white_1000"
android:padding="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout
android:id="@+id/notif_permission_account_layout"
<TextView
android:id="@+id/notif_permission_account"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginEnd="8dp"
android:layout_toStartOf="@id/notif_permission_account_switch"
android:text="@string/enable_notifications" />
<Switch
android:id="@+id/notif_permission_account_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/md_white_1000"
android:padding="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
android:layout_below="@id/notif_permission_account_switch"
android:layout_alignParentBottom="true"
android:paddingTop="6dp">
<TextView
android:id="@+id/notif_permission_account"
style="@style/TextAppearance.AppCompat.Subhead"
android:id="@+id/notif_permission_feeds"
style="@style/TextAppearance.AppCompat.Body1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginEnd="8dp"
android:layout_toStartOf="@id/notif_permission_account_switch"
android:text="@string/enable_notifications" />
android:text="@string/enable_all_feeds"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/notif_permission_feeds_switch"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Switch
android:id="@+id/notif_permission_account_switch"
android:id="@+id/notif_permission_feeds_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true" />
android:layout_alignParentEnd="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/notif_permission_feeds"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/notif_permission_account_switch"
android:layout_alignParentBottom="true"
android:paddingTop="6dp">
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/notif_permission_feeds"
style="@style/TextAppearance.AppCompat.Body1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginEnd="8dp"
android:text="@string/enable_all_feeds"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/notif_permission_feeds_switch"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</RelativeLayout>
<Switch
android:id="@+id/notif_permission_feeds_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/notif_permission_feeds"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/notif_permission_account_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/notif_permission_account_layout"
tools:itemCount="8"
tools:listitem="@layout/notification_permission_layout" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/notif_permission_account_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/notif_permission_account_layout"
tools:itemCount="8"
tools:listitem="@layout/notification_permission_layout" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</layout>

View File

@ -1,60 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.readrops.app.activities.WebViewActivity">
tools:context="com.readrops.app.activities.WebViewActivity"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.coordinatorlayout.widget.CoordinatorLayout
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<com.google.android.material.appbar.AppBarLayout
<androidx.appcompat.widget.Toolbar
android:id="@+id/activity_web_view_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" />
<androidx.appcompat.widget.Toolbar
android:id="@+id/activity_web_view_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" />
</com.google.android.material.appbar.AppBarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/activity_web_view_swipe"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/activity_web_view_swipe"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
android:layout_height="match_parent">
<androidx.core.widget.NestedScrollView
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
<ProgressBar
android:id="@+id/activity_web_view_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
android:layout_height="4dp"
android:indeterminate="false" />
<ProgressBar
android:id="@+id/activity_web_view_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
android:indeterminate="false" />
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,27 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal|center_vertical"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal|center_vertical"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:id="@+id/empty_list_image"
android:layout_width="200dp"
android:layout_height="200dp"
tools:src="@drawable/ic_rss_feed_grey" />
<ImageView
android:id="@+id/empty_list_image"
android:layout_width="200dp"
android:layout_height="200dp"
tools:src="@drawable/ic_rss_feed_grey" />
<TextView
android:id="@+id/empty_list_text_v"
style="@style/TextAppearance.AppCompat.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="@string/no_feed" />
</LinearLayout>
<TextView
android:id="@+id/empty_list_text_v"
style="@style/TextAppearance.AppCompat.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="@string/no_feed" />
</LinearLayout>
</layout>

View File

@ -1,95 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="16dp">
<LinearLayout
android:id="@+id/feed_options_edit_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="16dp">
<LinearLayout
android:id="@+id/feed_options_edit_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/feed_options_title">
<TextView
android:id="@+id/feed_edit_feed"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_edit"
android:drawablePadding="16dp"
android:text="@string/edit_feed" />
</LinearLayout>
<LinearLayout
android:id="@+id/feed_options_open_root_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/feed_options_edit_layout">
<TextView
android:id="@+id/feed_open_root"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_open_in_browser"
android:drawablePadding="16dp"
android:text="@string/open_url" />
</LinearLayout>
<LinearLayout
android:id="@+id/feed_options_delete_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/feed_options_open_root_layout">
<TextView
android:id="@+id/feed_options_delete"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_delete_grey"
android:drawablePadding="16dp"
android:text="@string/delete" />
</LinearLayout>
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/feed_options_title">
<TextView
android:id="@+id/feed_options_title"
style="@style/TextAppearance.AppCompat.Small"
android:id="@+id/feed_edit_feed"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Feed 1" />
android:drawableStart="@drawable/ic_edit"
android:drawablePadding="16dp"
android:text="@string/edit_feed" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id="@+id/feed_options_open_root_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/feed_options_edit_layout">
<TextView
android:id="@+id/feed_open_root"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_open_in_browser"
android:drawablePadding="16dp"
android:text="@string/open_url" />
</LinearLayout>
<LinearLayout
android:id="@+id/feed_options_delete_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/feed_options_open_root_layout">
<TextView
android:id="@+id/feed_options_delete"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_delete_grey"
android:drawablePadding="16dp"
android:text="@string/delete" />
</LinearLayout>
<TextView
android:id="@+id/feed_options_title"
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Feed 1" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@ -1,55 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<androidx.cardview.widget.CardView
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginTop="6dp"
android:layout_marginEnd="6dp"
android:clickable="true"
android:focusable="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginTop="6dp"
android:layout_marginEnd="6dp"
android:clickable="true"
android:focusable="true">
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:paddingTop="8dp">
<RelativeLayout
<TextView
android:id="@+id/folder_name"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginStart="8dp"
android:layout_toStartOf="@id/folder_feeds_count"
tools:text="Folder 1" />
<TextView
android:id="@+id/folder_feeds_count"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginEnd="8dp"
tools:text="15 feeds" />
<ProgressBar
android:id="@+id/folder_progress_bar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:paddingTop="8dp">
android:layout_height="4dp"
android:layout_below="@id/folder_name"
android:layout_alignParentStart="true"
android:layout_marginTop="6dp"
android:background="@android:color/transparent"
tools:max="100"
tools:progress="50" />
<TextView
android:id="@+id/folder_name"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginStart="8dp"
android:layout_toStartOf="@id/folder_feeds_count"
tools:text="Folder 1" />
</RelativeLayout>
<TextView
android:id="@+id/folder_feeds_count"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginEnd="8dp"
tools:text="15 feeds" />
</androidx.cardview.widget.CardView>
<ProgressBar
android:id="@+id/folder_progress_bar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_below="@id/folder_name"
android:layout_alignParentStart="true"
android:layout_marginTop="6dp"
android:background="@android:color/transparent"
tools:max="100"
tools:progress="50" />
</RelativeLayout>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -1,70 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="16dp">
<LinearLayout
android:id="@+id/folder_options_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="16dp">
<LinearLayout
android:id="@+id/folder_options_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/folder_options_title">
<TextView
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_edit_grey"
android:drawablePadding="16dp"
android:text="@string/edit_folder" />
</LinearLayout>
<LinearLayout
android:id="@+id/folder_options_delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/folder_options_edit">
<TextView
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_delete_grey"
android:drawablePadding="16dp"
android:text="@string/delete" />
</LinearLayout>
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/folder_options_title">
<TextView
android:id="@+id/folder_options_title"
style="@style/TextAppearance.AppCompat.Small"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Folder 1" />
android:drawableStart="@drawable/ic_edit_grey"
android:drawablePadding="16dp"
android:text="@string/edit_folder" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/folder_options_delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/folder_options_edit">
<TextView
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_delete_grey"
android:drawablePadding="16dp"
android:text="@string/delete" />
</LinearLayout>
<TextView
android:id="@+id/folder_options_title"
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Folder 1" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@ -1,33 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/feeds_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.FeedsFragment">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/feeds_root"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/feeds_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
tools:itemCount="5"
tools:listitem="@layout/feed_layout" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/feeds_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:itemCount="5"
tools:listitem="@layout/feed_layout" />
<com.readrops.app.utils.EmptyListView
android:id="@+id/feeds_empty_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:image="@drawable/ic_rss_feed_grey"
app:layout_constraintBottom_toBottomOf="@+id/feeds_recyclerview"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:text="@string/no_feed" />
<com.readrops.app.utils.EmptyListView
android:id="@+id/feeds_empty_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:image="@drawable/ic_rss_feed_grey"
app:layout_constraintBottom_toBottomOf="@+id/feeds_recyclerview"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:text="@string/no_feed" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@ -1,33 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/folders_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.FoldersFragment">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/folders_root"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/folders_list"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
tools:itemCount="5"
tools:listitem="@layout/folder_layout" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/folders_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:itemCount="5"
tools:listitem="@layout/folder_layout" />
<com.readrops.app.utils.EmptyListView
android:id="@+id/folders_empty_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:image="@drawable/ic_folder_grey"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:text="@string/no_folder" />
<com.readrops.app.utils.EmptyListView
android:id="@+id/folders_empty_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:image="@drawable/ic_folder_grey"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:text="@string/no_folder" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@ -1,153 +1,151 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:padding="6dp">
<RelativeLayout
android:id="@+id/layout_start"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/item_image"
android:layout_width="150dp"
android:layout_height="92dp"
android:layout_alignParentEnd="true"
android:layout_marginStart="6dp"
android:visibility="gone"
tools:visibility="visible" />
<TextView
android:id="@+id/item_description"
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/item_title"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/item_image"
android:ellipsize="end"
android:maxLines="3"
android:minLines="1"
tools:text="This is an item description" />
<TextView
android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/item_image"
android:ellipsize="end"
android:maxLines="2"
android:minLines="1"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
android:textSize="16sp"
android:textStyle="bold"
tools:text="This is an item title with sufficient length" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/layout_end"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:padding="6dp">
android:layout_below="@id/layout_start"
android:layout_marginTop="6dp">
<ImageView
android:id="@+id/item_folder_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_below="@id/item_feed_title_layout"
android:layout_alignParentStart="true"
android:layout_marginTop="6dp"
android:src="@drawable/ic_folder_grey" />
<RelativeLayout
android:id="@+id/layout_start"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/item_image"
android:layout_width="150dp"
android:layout_height="92dp"
android:layout_alignParentEnd="true"
android:layout_marginStart="6dp"
android:visibility="gone"
tools:visibility="visible" />
<TextView
android:id="@+id/item_description"
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/item_title"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/item_image"
android:ellipsize="end"
android:maxLines="3"
android:minLines="1"
tools:text="This is an item description" />
<TextView
android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/item_image"
android:ellipsize="end"
android:maxLines="2"
android:minLines="1"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
android:textSize="16sp"
android:textStyle="bold"
tools:text="This is an item title with sufficient length" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/layout_end"
android:layout_width="match_parent"
android:id="@+id/item_feed_title_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/layout_start"
android:layout_marginTop="6dp">
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/item_date">
<ImageView
android:id="@+id/item_folder_icon"
android:id="@+id/item_feed_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_below="@id/item_feed_title_layout"
android:layout_alignParentStart="true"
android:layout_marginTop="6dp"
android:src="@drawable/ic_folder_grey" />
<RelativeLayout
android:id="@+id/item_feed_title_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/item_date">
<ImageView
android:id="@+id/item_feed_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentStart="true"
android:src="@drawable/ic_rss_feed_grey" />
<TextView
android:id="@+id/item_feed_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="4dp"
android:layout_toEndOf="@id/item_feed_icon"
android:ellipsize="end"
android:maxLines="1"
tools:text="Feed Name" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/item_readtime_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/item_date"
android:layout_alignParentEnd="true"
android:layout_marginTop="6dp">
<ImageView
android:id="@+id/item_readtime_icon"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_centerVertical="true"
android:src="@drawable/ic_reading_time" />
<TextView
android:id="@+id/item_readtime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="4dp"
android:layout_toEndOf="@id/item_readtime_icon"
tools:text="3 mins" />
</RelativeLayout>
android:src="@drawable/ic_rss_feed_grey" />
<TextView
android:id="@+id/item_date"
android:id="@+id/item_feed_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="4dp"
android:background="@drawable/item_date_background"
android:paddingStart="8dp"
android:paddingTop="1dp"
android:paddingEnd="8dp"
android:paddingBottom="1dp"
android:textColor="@color/colorBackground"
tools:text="8 feb 2019" />
<TextView
android:id="@+id/item_folder_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/item_feed_title_layout"
android:layout_marginStart="6dp"
android:layout_marginTop="6dp"
android:layout_toEndOf="@id/item_folder_icon"
tools:text="Folder 1" />
android:layout_toEndOf="@id/item_feed_icon"
android:ellipsize="end"
android:maxLines="1"
tools:text="Feed Name" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/item_readtime_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/item_date"
android:layout_alignParentEnd="true"
android:layout_marginTop="6dp">
<ImageView
android:id="@+id/item_readtime_icon"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_centerVertical="true"
android:src="@drawable/ic_reading_time" />
<TextView
android:id="@+id/item_readtime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="4dp"
android:layout_toEndOf="@id/item_readtime_icon"
tools:text="3 mins" />
</RelativeLayout>
<TextView
android:id="@+id/item_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="4dp"
android:background="@drawable/item_date_background"
android:paddingStart="8dp"
android:paddingTop="1dp"
android:paddingEnd="8dp"
android:paddingBottom="1dp"
android:textColor="@color/colorBackground"
tools:text="8 feb 2019" />
<TextView
android:id="@+id/item_folder_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/item_feed_title_layout"
android:layout_marginStart="6dp"
android:layout_marginTop="6dp"
android:layout_toEndOf="@id/item_folder_icon"
tools:text="Folder 1" />
</RelativeLayout>
</layout>
</RelativeLayout>

View File

@ -1,53 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<androidx.cardview.widget.CardView
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginTop="6dp"
android:layout_marginEnd="6dp"
android:clickable="true"
android:focusable="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginTop="6dp"
android:layout_marginEnd="6dp"
android:clickable="true"
android:focusable="true">
android:background="?android:attr/selectableItemBackground"
android:padding="8dp">
<RelativeLayout
android:layout_width="match_parent"
<ImageView
android:id="@+id/notification_feed_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginEnd="6dp"
tools:src="@drawable/ic_rss_feed_grey" />
<TextView
android:id="@+id/notification_feed_name"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:padding="8dp">
android:layout_centerVertical="true"
android:layout_marginEnd="6dp"
android:layout_toStartOf="@id/notification_switch"
android:layout_toEndOf="@id/notification_feed_icon"
android:ellipsize="end"
android:maxLines="2"
tools:text="Feed 1" />
<ImageView
android:id="@+id/notification_feed_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginEnd="6dp"
tools:src="@drawable/ic_rss_feed_grey" />
<Switch
android:id="@+id/notification_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:clickable="false" />
<TextView
android:id="@+id/notification_feed_name"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginEnd="6dp"
android:layout_toStartOf="@id/notification_switch"
android:layout_toEndOf="@id/notification_feed_icon"
android:ellipsize="end"
android:maxLines="2"
tools:text="Feed 1" />
</RelativeLayout>
<Switch
android:id="@+id/notification_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:clickable="false" />
</androidx.cardview.widget.CardView>
</RelativeLayout>
</androidx.cardview.widget.CardView>
</layout>