Procházet zdrojové kódy

ProfileFragment: Make good use of the cached profile

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
master
Samuel Holland před 7 roky
rodič
revize
d6d6f34088
2 změnil soubory, kde provedl 23 přidání a 21 odebrání
  1. +7
    -13
      app/src/main/java/com/wireguard/android/ProfileDetailFragment.java
  2. +16
    -8
      app/src/main/java/com/wireguard/android/ProfileFragment.java

+ 7
- 13
app/src/main/java/com/wireguard/android/ProfileDetailFragment.java Zobrazit soubor

@@ -8,6 +8,7 @@ import android.view.View;
import android.view.ViewGroup;

import com.wireguard.android.databinding.ProfileDetailFragmentBinding;
import com.wireguard.config.Profile;

/**
* Fragment for viewing information about a WireGuard profile.
@@ -16,6 +17,12 @@ import com.wireguard.android.databinding.ProfileDetailFragmentBinding;
public class ProfileDetailFragment extends ProfileFragment {
private ProfileDetailFragmentBinding binding;

@Override
protected void onCachedProfileChanged(Profile cachedProfile) {
if (binding != null)
binding.setProfile(cachedProfile);
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -33,17 +40,4 @@ public class ProfileDetailFragment extends ProfileFragment {
binding.setProfile(getCachedProfile());
return binding.getRoot();
}

@Override
public void onServiceConnected(ProfileServiceInterface service) {
super.onServiceConnected(service);
binding.setProfile(service.getProfiles().get(getProfile()));
}

@Override
public void setProfile(String profile) {
super.setProfile(profile);
if (binding != null)
binding.setProfile(getCachedProfile());
}
}

+ 16
- 8
app/src/main/java/com/wireguard/android/ProfileFragment.java Zobrazit soubor

@@ -20,14 +20,17 @@ abstract class ProfileFragment extends ServiceClientFragment<ProfileServiceInter
return profile;
}

protected void onCachedProfileChanged(Profile cachedProfile) {
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Restore the saved profile if there is one; otherwise grab it from the arguments.
if (savedInstanceState != null)
profile = savedInstanceState.getString(ProfileActivity.KEY_PROFILE_NAME);
setProfile(savedInstanceState.getString(ProfileActivity.KEY_PROFILE_NAME));
else if (getArguments() != null)
profile = getArguments().getString(ProfileActivity.KEY_PROFILE_NAME);
setProfile(getArguments().getString(ProfileActivity.KEY_PROFILE_NAME));
}

@Override
@@ -39,15 +42,20 @@ abstract class ProfileFragment extends ServiceClientFragment<ProfileServiceInter
@Override
public void onServiceConnected(ProfileServiceInterface service) {
super.onServiceConnected(service);
cachedProfile = service.getProfiles().get(profile);
updateCachedProfile(service);
}

public void setProfile(String profile) {
this.profile = profile;
final ProfileServiceInterface service = getService();
if (service != null)
cachedProfile = service.getProfiles().get(profile);
else
cachedProfile = null;
updateCachedProfile(getService());
}

private void updateCachedProfile(ProfileServiceInterface service) {
final Profile newCachedProfile = service != null
? service.getProfiles().get(profile) : null;
if (newCachedProfile != cachedProfile) {
cachedProfile = newCachedProfile;
onCachedProfileChanged(newCachedProfile);
}
}
}

Načítá se…
Zrušit
Uložit