mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-05-14 14:02:49 +00:00
Abstract the refresh loop away into a helper class
This commit is contained in:
parent
3f3863a187
commit
9859011a6d
3 changed files with 78 additions and 48 deletions
41
app/src/main/java/me/impy/aegis/helpers/UIRefresher.java
Normal file
41
app/src/main/java/me/impy/aegis/helpers/UIRefresher.java
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
package me.impy.aegis.helpers;
|
||||||
|
|
||||||
|
import android.os.Handler;
|
||||||
|
|
||||||
|
public class UIRefresher {
|
||||||
|
private boolean _running;
|
||||||
|
private Listener _listener;
|
||||||
|
private Handler _handler;
|
||||||
|
|
||||||
|
public UIRefresher(Listener listener) {
|
||||||
|
_listener = listener;
|
||||||
|
_handler = new Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start() {
|
||||||
|
if (_running) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_running = true;
|
||||||
|
|
||||||
|
_listener.onRefresh();
|
||||||
|
_handler.postDelayed(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (_running) {
|
||||||
|
_listener.onRefresh();
|
||||||
|
_handler.postDelayed(this, _listener.getMillisTillNextRefresh());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, _listener.getMillisTillNextRefresh());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stop() {
|
||||||
|
_running = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface Listener {
|
||||||
|
void onRefresh();
|
||||||
|
long getMillisTillNextRefresh();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
package me.impy.aegis.ui.views;
|
package me.impy.aegis.ui.views;
|
||||||
|
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.os.Handler;
|
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
@ -10,6 +9,7 @@ import android.widget.TextView;
|
||||||
import com.amulyakhare.textdrawable.TextDrawable;
|
import com.amulyakhare.textdrawable.TextDrawable;
|
||||||
|
|
||||||
import me.impy.aegis.R;
|
import me.impy.aegis.R;
|
||||||
|
import me.impy.aegis.helpers.UIRefresher;
|
||||||
|
|
||||||
public class KeyProfileHolder extends RecyclerView.ViewHolder {
|
public class KeyProfileHolder extends RecyclerView.ViewHolder {
|
||||||
private TextView _profileName;
|
private TextView _profileName;
|
||||||
|
@ -20,20 +20,31 @@ public class KeyProfileHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
private PeriodProgressBar _progressBar;
|
private PeriodProgressBar _progressBar;
|
||||||
|
|
||||||
private Handler _uiHandler;
|
private UIRefresher _refresher;
|
||||||
private boolean _running = false;
|
|
||||||
|
|
||||||
KeyProfileHolder(final View view) {
|
public KeyProfileHolder(final View view) {
|
||||||
super(view);
|
super(view);
|
||||||
_profileName = view.findViewById(R.id.profile_name);
|
_profileName = view.findViewById(R.id.profile_name);
|
||||||
_profileCode = view.findViewById(R.id.profile_code);
|
_profileCode = view.findViewById(R.id.profile_code);
|
||||||
_profileIssuer = view.findViewById(R.id.profile_issuer);
|
_profileIssuer = view.findViewById(R.id.profile_issuer);
|
||||||
_profileDrawable = view.findViewById(R.id.ivTextDrawable);
|
_profileDrawable = view.findViewById(R.id.ivTextDrawable);
|
||||||
_progressBar = view.findViewById(R.id.progressBar);
|
|
||||||
_uiHandler = new Handler();
|
|
||||||
|
|
||||||
|
_progressBar = view.findViewById(R.id.progressBar);
|
||||||
int primaryColorId = view.getContext().getResources().getColor(R.color.colorPrimary);
|
int primaryColorId = view.getContext().getResources().getColor(R.color.colorPrimary);
|
||||||
_progressBar.getProgressDrawable().setColorFilter(primaryColorId, PorterDuff.Mode.SRC_IN);
|
_progressBar.getProgressDrawable().setColorFilter(primaryColorId, PorterDuff.Mode.SRC_IN);
|
||||||
|
|
||||||
|
_refresher = new UIRefresher(new UIRefresher.Listener() {
|
||||||
|
@Override
|
||||||
|
public void onRefresh() {
|
||||||
|
refreshCode();
|
||||||
|
_progressBar.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getMillisTillNextRefresh() {
|
||||||
|
return _profile.getEntry().getInfo().getMillisTillNextRotation();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setData(KeyProfile profile, boolean showIssuer, boolean showProgress) {
|
public void setData(KeyProfile profile, boolean showIssuer, boolean showProgress) {
|
||||||
|
@ -57,30 +68,11 @@ public class KeyProfileHolder extends RecyclerView.ViewHolder {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startRefreshLoop() {
|
public void startRefreshLoop() {
|
||||||
if (_running) {
|
_refresher.start();
|
||||||
return;
|
|
||||||
}
|
|
||||||
_running = true;
|
|
||||||
|
|
||||||
refresh();
|
|
||||||
_uiHandler.postDelayed(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (_running) {
|
|
||||||
refresh();
|
|
||||||
_uiHandler.postDelayed(this, _profile.getEntry().getInfo().getMillisTillNextRotation());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, _profile.getEntry().getInfo().getMillisTillNextRotation());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stopRefreshLoop() {
|
public void stopRefreshLoop() {
|
||||||
_running = false;
|
_refresher.stop();
|
||||||
}
|
|
||||||
|
|
||||||
private void refresh() {
|
|
||||||
refreshCode();
|
|
||||||
_progressBar.refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshCode() {
|
private void refreshCode() {
|
||||||
|
|
|
@ -2,7 +2,6 @@ package me.impy.aegis.ui.views;
|
||||||
|
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v7.widget.LinearLayoutManager;
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
@ -15,16 +14,17 @@ import me.impy.aegis.R;
|
||||||
import me.impy.aegis.crypto.KeyInfo;
|
import me.impy.aegis.crypto.KeyInfo;
|
||||||
import me.impy.aegis.db.DatabaseEntry;
|
import me.impy.aegis.db.DatabaseEntry;
|
||||||
import me.impy.aegis.helpers.SimpleItemTouchHelperCallback;
|
import me.impy.aegis.helpers.SimpleItemTouchHelperCallback;
|
||||||
|
import me.impy.aegis.helpers.UIRefresher;
|
||||||
|
|
||||||
public class KeyProfileView extends Fragment implements KeyProfileAdapter.Listener {
|
public class KeyProfileView extends Fragment implements KeyProfileAdapter.Listener {
|
||||||
private KeyProfileAdapter _adapter;
|
private KeyProfileAdapter _adapter;
|
||||||
private Listener _listener;
|
private Listener _listener;
|
||||||
|
|
||||||
private PeriodProgressBar _progressBar;
|
private PeriodProgressBar _progressBar;
|
||||||
private Handler _uiHandler;
|
|
||||||
private boolean _running = false;
|
|
||||||
private boolean _showProgress = false;
|
private boolean _showProgress = false;
|
||||||
|
|
||||||
|
private UIRefresher _refresher;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@ -35,7 +35,6 @@ public class KeyProfileView extends Fragment implements KeyProfileAdapter.Listen
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
View view = inflater.inflate(R.layout.fragment_keyprofile_view, container, false);
|
View view = inflater.inflate(R.layout.fragment_keyprofile_view, container, false);
|
||||||
|
|
||||||
_uiHandler = new Handler();
|
|
||||||
_progressBar = view.findViewById(R.id.progressBar);
|
_progressBar = view.findViewById(R.id.progressBar);
|
||||||
int primaryColorId = getResources().getColor(R.color.colorPrimary);
|
int primaryColorId = getResources().getColor(R.color.colorPrimary);
|
||||||
_progressBar.getProgressDrawable().setColorFilter(primaryColorId, PorterDuff.Mode.SRC_IN);
|
_progressBar.getProgressDrawable().setColorFilter(primaryColorId, PorterDuff.Mode.SRC_IN);
|
||||||
|
@ -49,6 +48,18 @@ public class KeyProfileView extends Fragment implements KeyProfileAdapter.Listen
|
||||||
touchHelper.attachToRecyclerView(rvKeyProfiles);
|
touchHelper.attachToRecyclerView(rvKeyProfiles);
|
||||||
rvKeyProfiles.setAdapter(_adapter);
|
rvKeyProfiles.setAdapter(_adapter);
|
||||||
|
|
||||||
|
_refresher = new UIRefresher(new UIRefresher.Listener() {
|
||||||
|
@Override
|
||||||
|
public void onRefresh() {
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getMillisTillNextRefresh() {
|
||||||
|
return KeyInfo.getMillisTillNextRotation(_adapter.getUniformPeriod());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,27 +87,13 @@ public class KeyProfileView extends Fragment implements KeyProfileAdapter.Listen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startRefreshLoop() {
|
private void startRefreshLoop() {
|
||||||
if (_running) {
|
_refresher.start();
|
||||||
return;
|
|
||||||
}
|
|
||||||
_running = true;
|
|
||||||
|
|
||||||
refresh();
|
|
||||||
_uiHandler.postDelayed(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (_running) {
|
|
||||||
refresh();
|
|
||||||
_uiHandler.postDelayed(this, KeyInfo.getMillisTillNextRotation(_adapter.getUniformPeriod()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, KeyInfo.getMillisTillNextRotation(_adapter.getUniformPeriod()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void stopRefreshLoop() {
|
private void stopRefreshLoop() {
|
||||||
refresh();
|
refresh();
|
||||||
_running = false;
|
_refresher.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setListener(Listener listener) {
|
public void setListener(Listener listener) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue