Apply 'Lhunath' code inspection fixes and improvements.
This commit is contained in:
		@@ -36,8 +36,8 @@ android {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    compile             project( ':masterpassword:algorithm' )
 | 
			
		||||
    compile             project( ':masterpassword:tests' )
 | 
			
		||||
    compile             project( ':masterpassword-algorithm' )
 | 
			
		||||
    compile             project( ':masterpassword-tests' )
 | 
			
		||||
 | 
			
		||||
    compile             group: 'org.slf4j', name: 'slf4j-android', version:'1.7.13-underscore'
 | 
			
		||||
    compile             group: 'com.jakewharton', name: 'butterknife', version:'8.5.1'
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,7 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
    private static final Logger   logger                = Logger.get( EmergencyActivity.class );
 | 
			
		||||
    private static final ClipData EMPTY_CLIP            = new ClipData( new ClipDescription( "", new String[0] ), new ClipData.Item( "" ) );
 | 
			
		||||
    private static final int      PASSWORD_NOTIFICATION = 0;
 | 
			
		||||
    public static final int CLIPBOARD_CLEAR_DELAY = 20 /* s */ * MPConstant.MS_PER_S;
 | 
			
		||||
 | 
			
		||||
    private final Preferences                      preferences  = Preferences.get( this );
 | 
			
		||||
    private final ListeningExecutorService         executor     = MoreExecutors.listeningDecorator( Executors.newSingleThreadExecutor() );
 | 
			
		||||
@@ -81,14 +82,13 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
    private int    id_version;
 | 
			
		||||
    private String sitePassword;
 | 
			
		||||
 | 
			
		||||
    public static void start(Context context) {
 | 
			
		||||
    public static void start(final Context context) {
 | 
			
		||||
        context.startActivity( new Intent( context, EmergencyActivity.class ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onCreate(@Nullable Bundle savedInstanceState) {
 | 
			
		||||
    public void onCreate(@Nullable final Bundle savedInstanceState) {
 | 
			
		||||
        super.onCreate( savedInstanceState );
 | 
			
		||||
        Res.init( getResources() );
 | 
			
		||||
 | 
			
		||||
        getWindow().setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE );
 | 
			
		||||
        setContentView( R.layout.activity_emergency );
 | 
			
		||||
@@ -157,13 +157,13 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
            }
 | 
			
		||||
        } );
 | 
			
		||||
 | 
			
		||||
        fullNameField.setTypeface( Res.exo_Thin );
 | 
			
		||||
        fullNameField.setTypeface( Res.get( this ).exo_Thin );
 | 
			
		||||
        fullNameField.setPaintFlags( fullNameField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
 | 
			
		||||
        masterPasswordField.setTypeface( Res.sourceCodePro_ExtraLight );
 | 
			
		||||
        masterPasswordField.setTypeface( Res.get( this ).sourceCodePro_ExtraLight );
 | 
			
		||||
        masterPasswordField.setPaintFlags( masterPasswordField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
 | 
			
		||||
        siteNameField.setTypeface( Res.exo_Regular );
 | 
			
		||||
        siteNameField.setTypeface( Res.get( this ).exo_Regular );
 | 
			
		||||
        siteNameField.setPaintFlags( siteNameField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
 | 
			
		||||
        sitePasswordField.setTypeface( Res.sourceCodePro_Black );
 | 
			
		||||
        sitePasswordField.setTypeface( Res.get( this ).sourceCodePro_Black );
 | 
			
		||||
        sitePasswordField.setPaintFlags( sitePasswordField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
 | 
			
		||||
 | 
			
		||||
        rememberFullNameField.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
 | 
			
		||||
@@ -243,9 +243,11 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
        final String fullName = fullNameField.getText().toString();
 | 
			
		||||
        final char[] masterPassword = masterPasswordField.getText().toString().toCharArray();
 | 
			
		||||
        final MasterKey.Version version = (MasterKey.Version) siteVersionButton.getTag();
 | 
			
		||||
        if (fullName.hashCode() == id_userName && Arrays.hashCode( masterPassword ) == id_masterPassword &&
 | 
			
		||||
            version.ordinal() == id_version && masterKeyFuture != null && !masterKeyFuture.isCancelled())
 | 
			
		||||
            return;
 | 
			
		||||
        if ((id_userName == fullName.hashCode())
 | 
			
		||||
            && (id_masterPassword == Arrays.hashCode( masterPassword ))
 | 
			
		||||
            && (id_version == version.ordinal()))
 | 
			
		||||
            if ((masterKeyFuture != null) && !masterKeyFuture.isCancelled())
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
        id_userName = fullName.hashCode();
 | 
			
		||||
        id_masterPassword = Arrays.hashCode( masterPassword );
 | 
			
		||||
@@ -257,7 +259,7 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
        if (masterKeyFuture != null)
 | 
			
		||||
            masterKeyFuture.cancel( true );
 | 
			
		||||
 | 
			
		||||
        if (fullName.isEmpty() || masterPassword.length == 0) {
 | 
			
		||||
        if (fullName.isEmpty() || (masterPassword.length == 0)) {
 | 
			
		||||
            sitePasswordField.setText( "" );
 | 
			
		||||
            progressView.setVisibility( View.INVISIBLE );
 | 
			
		||||
            return;
 | 
			
		||||
@@ -272,7 +274,7 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
                try {
 | 
			
		||||
                    return MasterKey.create( version, fullName, masterPassword );
 | 
			
		||||
                }
 | 
			
		||||
                catch (Exception e) {
 | 
			
		||||
                catch (final Exception e) {
 | 
			
		||||
                    sitePasswordField.setText( "" );
 | 
			
		||||
                    progressView.setVisibility( View.INVISIBLE );
 | 
			
		||||
                    logger.err( e, "While generating master key." );
 | 
			
		||||
@@ -297,7 +299,7 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
        final MPSiteType type = (MPSiteType) siteTypeButton.getTag();
 | 
			
		||||
        final UnsignedInteger counter = UnsignedInteger.valueOf( siteCounterButton.getText().toString() );
 | 
			
		||||
 | 
			
		||||
        if (masterKeyFuture == null || siteName.isEmpty() || type == null) {
 | 
			
		||||
        if ((masterKeyFuture == null) || siteName.isEmpty() || (type == null)) {
 | 
			
		||||
            sitePasswordField.setText( "" );
 | 
			
		||||
            progressView.setVisibility( View.INVISIBLE );
 | 
			
		||||
 | 
			
		||||
@@ -322,17 +324,17 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
                        }
 | 
			
		||||
                    } );
 | 
			
		||||
                }
 | 
			
		||||
                catch (InterruptedException ignored) {
 | 
			
		||||
                catch (final InterruptedException ignored) {
 | 
			
		||||
                    sitePasswordField.setText( "" );
 | 
			
		||||
                    progressView.setVisibility( View.INVISIBLE );
 | 
			
		||||
                }
 | 
			
		||||
                catch (ExecutionException e) {
 | 
			
		||||
                catch (final ExecutionException e) {
 | 
			
		||||
                    sitePasswordField.setText( "" );
 | 
			
		||||
                    progressView.setVisibility( View.INVISIBLE );
 | 
			
		||||
                    logger.err( e, "While generating site password." );
 | 
			
		||||
                    throw Throwables.propagate( e );
 | 
			
		||||
                }
 | 
			
		||||
                catch (RuntimeException e) {
 | 
			
		||||
                catch (final RuntimeException e) {
 | 
			
		||||
                    sitePasswordField.setText( "" );
 | 
			
		||||
                    progressView.setVisibility( View.INVISIBLE );
 | 
			
		||||
                    logger.err( e, "While generating site password." );
 | 
			
		||||
@@ -342,7 +344,7 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
        } );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void integrityTests(View view) {
 | 
			
		||||
    public void integrityTests(final View view) {
 | 
			
		||||
        if (masterKeyFuture != null) {
 | 
			
		||||
            masterKeyFuture.cancel( true );
 | 
			
		||||
            masterKeyFuture = null;
 | 
			
		||||
@@ -350,8 +352,8 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
        TestActivity.startNoSkip( this );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void copySitePassword(View view) {
 | 
			
		||||
        final String currentSitePassword = this.sitePassword;
 | 
			
		||||
    public void copySitePassword(final View view) {
 | 
			
		||||
        final String currentSitePassword = sitePassword;
 | 
			
		||||
        if (TextUtils.isEmpty( currentSitePassword ))
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
@@ -384,7 +386,7 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
                notificationManager.cancel( PASSWORD_NOTIFICATION );
 | 
			
		||||
                timer.cancel();
 | 
			
		||||
            }
 | 
			
		||||
        }, 20000 );
 | 
			
		||||
        }, CLIPBOARD_CLEAR_DELAY );
 | 
			
		||||
 | 
			
		||||
        Intent startMain = new Intent( Intent.ACTION_MAIN );
 | 
			
		||||
        startMain.addCategory( Intent.CATEGORY_HOME );
 | 
			
		||||
@@ -392,7 +394,7 @@ public class EmergencyActivity extends Activity {
 | 
			
		||||
        startActivity( startMain );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private abstract class ValueChangedListener
 | 
			
		||||
    private abstract static class ValueChangedListener
 | 
			
		||||
            implements TextWatcher, NumberPicker.OnValueChangeListener, AdapterView.OnItemSelectedListener, View.OnFocusChangeListener {
 | 
			
		||||
 | 
			
		||||
        abstract void update();
 | 
			
		||||
 
 | 
			
		||||
@@ -53,7 +53,7 @@ public class MainThreadExecutor extends AbstractExecutorService {
 | 
			
		||||
        synchronized (commands) {
 | 
			
		||||
            ImmutableList<Runnable> pendingTasks = ImmutableList.copyOf( commands );
 | 
			
		||||
            commands.clear();
 | 
			
		||||
            commands.notify();
 | 
			
		||||
            commands.notifyAll();
 | 
			
		||||
            return pendingTasks;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ import javax.annotation.Nullable;
 | 
			
		||||
/**
 | 
			
		||||
 * @author lhunath, 2016-02-20
 | 
			
		||||
 */
 | 
			
		||||
public class Preferences {
 | 
			
		||||
public final class Preferences {
 | 
			
		||||
 | 
			
		||||
    private static final String PREF_TESTS_PASSED       = "integrityTestsPassed";
 | 
			
		||||
    private static final String PREF_NATIVE_KDF         = "nativeKDF";
 | 
			
		||||
@@ -35,7 +35,7 @@ public class Preferences {
 | 
			
		||||
        return instance;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Preferences(Context context) {
 | 
			
		||||
    private Preferences(final Context context) {
 | 
			
		||||
        this.context = context;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -47,7 +47,7 @@ public class Preferences {
 | 
			
		||||
        return prefs;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean setNativeKDFEnabled(boolean enabled) {
 | 
			
		||||
    public boolean setNativeKDFEnabled(final boolean enabled) {
 | 
			
		||||
        if (isAllowNativeKDF() == enabled)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
@@ -71,7 +71,7 @@ public class Preferences {
 | 
			
		||||
        return prefs().getStringSet( PREF_TESTS_PASSED, ImmutableSet.<String>of() );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean setRememberFullName(boolean enabled) {
 | 
			
		||||
    public boolean setRememberFullName(final boolean enabled) {
 | 
			
		||||
        if (isRememberFullName() == enabled)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
@@ -83,7 +83,7 @@ public class Preferences {
 | 
			
		||||
        return prefs().getBoolean( PREF_REMEMBER_FULL_NAME, false );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean setForgetPassword(boolean enabled) {
 | 
			
		||||
    public boolean setForgetPassword(final boolean enabled) {
 | 
			
		||||
        if (isForgetPassword() == enabled)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
@@ -95,7 +95,7 @@ public class Preferences {
 | 
			
		||||
        return prefs().getBoolean( PREF_FORGET_PASSWORD, false );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean setMaskPassword(boolean enabled) {
 | 
			
		||||
    public boolean setMaskPassword(final boolean enabled) {
 | 
			
		||||
        if (isMaskPassword() == enabled)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
@@ -107,7 +107,7 @@ public class Preferences {
 | 
			
		||||
        return prefs().getBoolean( PREF_MASK_PASSWORD, false );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean setFullName(@Nullable String value) {
 | 
			
		||||
    public boolean setFullName(@Nullable final String value) {
 | 
			
		||||
        if (getFullName().equals( value ))
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
@@ -120,8 +120,8 @@ public class Preferences {
 | 
			
		||||
        return prefs().getString( PREF_FULL_NAME, "" );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean setDefaultSiteType(@Nonnull MPSiteType value) {
 | 
			
		||||
        if (getDefaultSiteType().equals( value ))
 | 
			
		||||
    public boolean setDefaultSiteType(@Nonnull final MPSiteType value) {
 | 
			
		||||
        if (getDefaultSiteType() == value)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
        prefs().edit().putInt( PREF_SITE_TYPE, value.ordinal() ).apply();
 | 
			
		||||
@@ -133,8 +133,8 @@ public class Preferences {
 | 
			
		||||
        return MPSiteType.values()[prefs().getInt( PREF_SITE_TYPE, MPSiteType.GeneratedLong.ordinal() )];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean setDefaultVersion(@Nonnull MasterKey.Version value) {
 | 
			
		||||
        if (getDefaultVersion().equals( value ))
 | 
			
		||||
    public boolean setDefaultVersion(@Nonnull final MasterKey.Version value) {
 | 
			
		||||
        if (getDefaultVersion() == value)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
        prefs().edit().putInt( PREF_ALGORITHM_VERSION, value.ordinal() ).apply();
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
package com.lyndir.masterpassword;
 | 
			
		||||
 | 
			
		||||
import android.content.Context;
 | 
			
		||||
import android.content.res.Resources;
 | 
			
		||||
import android.graphics.Typeface;
 | 
			
		||||
 | 
			
		||||
@@ -7,28 +8,32 @@ import android.graphics.Typeface;
 | 
			
		||||
/**
 | 
			
		||||
 * @author lhunath, 2014-08-25
 | 
			
		||||
 */
 | 
			
		||||
public class Res {
 | 
			
		||||
public final class Res {
 | 
			
		||||
 | 
			
		||||
    public static Typeface sourceCodePro_Black;
 | 
			
		||||
    public static Typeface sourceCodePro_ExtraLight;
 | 
			
		||||
    public static Typeface exo_Bold;
 | 
			
		||||
    public static Typeface exo_ExtraBold;
 | 
			
		||||
    public static Typeface exo_Regular;
 | 
			
		||||
    public static Typeface exo_Thin;
 | 
			
		||||
    public final Typeface sourceCodePro_Black;
 | 
			
		||||
    public final Typeface sourceCodePro_ExtraLight;
 | 
			
		||||
    public final Typeface exo_Bold;
 | 
			
		||||
    public final Typeface exo_ExtraBold;
 | 
			
		||||
    public final Typeface exo_Regular;
 | 
			
		||||
    public final Typeface exo_Thin;
 | 
			
		||||
 | 
			
		||||
    private static boolean initialized;
 | 
			
		||||
    private static Res res;
 | 
			
		||||
 | 
			
		||||
    public static void init(Resources resources) {
 | 
			
		||||
    public static synchronized Res get(final Context context) {
 | 
			
		||||
        if (res == null)
 | 
			
		||||
            res = new Res( context );
 | 
			
		||||
 | 
			
		||||
        if (initialized)
 | 
			
		||||
            return;
 | 
			
		||||
        initialized = true;
 | 
			
		||||
        return res;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        sourceCodePro_Black = Typeface.createFromAsset( resources.getAssets(), "SourceCodePro-Black.otf" );
 | 
			
		||||
        sourceCodePro_ExtraLight = Typeface.createFromAsset( resources.getAssets(), "SourceCodePro-ExtraLight.otf" );
 | 
			
		||||
        exo_Bold = Typeface.createFromAsset( resources.getAssets(), "Exo2.0-Bold.otf" );
 | 
			
		||||
        exo_ExtraBold = Typeface.createFromAsset( resources.getAssets(), "Exo2.0-ExtraBold.otf" );
 | 
			
		||||
        exo_Regular = Typeface.createFromAsset( resources.getAssets(), "Exo2.0-Regular.otf" );
 | 
			
		||||
        exo_Thin = Typeface.createFromAsset( resources.getAssets(), "Exo2.0-Thin.otf" );
 | 
			
		||||
    @SuppressWarnings("HardCodedStringLiteral")
 | 
			
		||||
    private Res(final Context context) {
 | 
			
		||||
 | 
			
		||||
        sourceCodePro_Black = Typeface.createFromAsset( context.getResources().getAssets(), "SourceCodePro-Black.otf" );
 | 
			
		||||
        sourceCodePro_ExtraLight = Typeface.createFromAsset( context.getResources().getAssets(), "SourceCodePro-ExtraLight.otf" );
 | 
			
		||||
        exo_Bold = Typeface.createFromAsset( context.getResources().getAssets(), "Exo2.0-Bold.otf" );
 | 
			
		||||
        exo_ExtraBold = Typeface.createFromAsset( context.getResources().getAssets(), "Exo2.0-ExtraBold.otf" );
 | 
			
		||||
        exo_Regular = Typeface.createFromAsset( context.getResources().getAssets(), "Exo2.0-Regular.otf" );
 | 
			
		||||
        exo_Thin = Typeface.createFromAsset( context.getResources().getAssets(), "Exo2.0-Thin.otf" );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -47,14 +47,13 @@ public class TestActivity extends Activity implements MPTestSuite.Listener {
 | 
			
		||||
    private Runnable                  action;
 | 
			
		||||
    private ImmutableSet<String>      testNames;
 | 
			
		||||
 | 
			
		||||
    public static void startNoSkip(Context context) {
 | 
			
		||||
    public static void startNoSkip(final Context context) {
 | 
			
		||||
        context.startActivity( new Intent( context, TestActivity.class ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onCreate(@Nullable Bundle savedInstanceState) {
 | 
			
		||||
    public void onCreate(@Nullable final Bundle savedInstanceState) {
 | 
			
		||||
        super.onCreate( savedInstanceState );
 | 
			
		||||
        Res.init( getResources() );
 | 
			
		||||
 | 
			
		||||
        setContentView( R.layout.activity_test );
 | 
			
		||||
        ButterKnife.bind( this );
 | 
			
		||||
@@ -76,11 +75,11 @@ public class TestActivity extends Activity implements MPTestSuite.Listener {
 | 
			
		||||
                        @Nullable
 | 
			
		||||
                        @Override
 | 
			
		||||
                        public String apply(@Nullable final MPTests.Case input) {
 | 
			
		||||
                            return input == null? null: input.identifier;
 | 
			
		||||
                            return (input == null)? null: input.identifier;
 | 
			
		||||
                        }
 | 
			
		||||
                    } ).filter( Predicates.notNull() ).toSet();
 | 
			
		||||
        }
 | 
			
		||||
        catch (MPTestSuite.UnavailableException e) {
 | 
			
		||||
        catch (final MPTestSuite.UnavailableException e) {
 | 
			
		||||
            logger.err( e, "While loading test suite" );
 | 
			
		||||
            setStatus( R.string.tests_unavailable, R.string.tests_btn_unavailable, new Runnable() {
 | 
			
		||||
                @Override
 | 
			
		||||
@@ -111,7 +110,7 @@ public class TestActivity extends Activity implements MPTestSuite.Listener {
 | 
			
		||||
        Futures.addCallback( testFuture = backgroundExecutor.submit( testSuite ), new FutureCallback<Boolean>() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onSuccess(@Nullable final Boolean result) {
 | 
			
		||||
                if (result != null && result)
 | 
			
		||||
                if ((result != null) && result)
 | 
			
		||||
                    setStatus( R.string.tests_passed, R.string.tests_btn_passed, new Runnable() {
 | 
			
		||||
                        @Override
 | 
			
		||||
                        public void run() {
 | 
			
		||||
@@ -141,12 +140,12 @@ public class TestActivity extends Activity implements MPTestSuite.Listener {
 | 
			
		||||
        }, mainExecutor );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void onAction(View v) {
 | 
			
		||||
    public void onAction(final View v) {
 | 
			
		||||
        if (action != null)
 | 
			
		||||
            action.run();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void setStatus(int statusId, int buttonId, @Nullable Runnable action) {
 | 
			
		||||
    private void setStatus(final int statusId, final int buttonId, @Nullable final Runnable action) {
 | 
			
		||||
        this.action = action;
 | 
			
		||||
 | 
			
		||||
        if (statusId == 0)
 | 
			
		||||
@@ -166,7 +165,7 @@ public class TestActivity extends Activity implements MPTestSuite.Listener {
 | 
			
		||||
        runOnUiThread( new Runnable() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void run() {
 | 
			
		||||
                logView.append( strf( '\n' + messageFormat, args ) );
 | 
			
		||||
                logView.append( strf( "%n" + messageFormat, args ) );
 | 
			
		||||
 | 
			
		||||
                progressView.setMax( max );
 | 
			
		||||
                progressView.setProgress( current );
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,7 @@
 | 
			
		||||
            xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="match_parent"
 | 
			
		||||
            android:fillViewport="true"
 | 
			
		||||
            android:background="@drawable/background">
 | 
			
		||||
            android:fillViewport="true">
 | 
			
		||||
 | 
			
		||||
    <LinearLayout
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,7 @@
 | 
			
		||||
            xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="match_parent"
 | 
			
		||||
            android:fillViewport="true"
 | 
			
		||||
            android:background="@drawable/background">
 | 
			
		||||
            android:fillViewport="true">
 | 
			
		||||
 | 
			
		||||
    <LinearLayout
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
@@ -53,6 +52,7 @@
 | 
			
		||||
                android:layout_marginTop="20dp"
 | 
			
		||||
                android:gravity="bottom"
 | 
			
		||||
                android:background="@android:color/transparent"
 | 
			
		||||
                android:textIsSelectable="true"
 | 
			
		||||
                android:textSize="9sp"
 | 
			
		||||
                android:textColor="@android:color/tertiary_text_dark" />
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,5 +2,6 @@
 | 
			
		||||
<resources>
 | 
			
		||||
 | 
			
		||||
    <style name="MPTheme" parent="android:Theme.Holo.Dialog.MinWidth">
 | 
			
		||||
        <item name="android:windowBackground">@drawable/background</item>
 | 
			
		||||
    </style>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user