Skip to content

Commit

Permalink
Fixes #109
Browse files Browse the repository at this point in the history
  • Loading branch information
heinrichreimer committed Aug 31, 2016
1 parent 20fb9c4 commit 69c7cf1
Show file tree
Hide file tree
Showing 5 changed files with 163 additions and 27 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.android.tools.build:gradle:2.1.3'
classpath 'com.google.gms:google-services:3.0.0'

// NOTE: Do not place your application dependencies here; they belong
Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Sat May 14 12:31:54 CEST 2016
#Wed Aug 31 13:16:33 CEST 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,39 @@ public int getButtonCtaLabelRes() {
return buttonCtaLabelRes;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

FragmentSlide that = (FragmentSlide) o;

if (background != that.background) return false;
if (backgroundDark != that.backgroundDark) return false;
if (canGoForward != that.canGoForward) return false;
if (canGoBackward != that.canGoBackward) return false;
if (buttonCtaLabelRes != that.buttonCtaLabelRes) return false;
if (fragment != null ? !fragment.equals(that.fragment) : that.fragment != null)
return false;
if (buttonCtaLabel != null ? !buttonCtaLabel.equals(that.buttonCtaLabel) : that.buttonCtaLabel != null)
return false;
return buttonCtaClickListener != null ? buttonCtaClickListener.equals(that.buttonCtaClickListener) : that.buttonCtaClickListener == null;

}

@Override
public int hashCode() {
int result = fragment != null ? fragment.hashCode() : 0;
result = 31 * result + background;
result = 31 * result + backgroundDark;
result = 31 * result + (canGoForward ? 1 : 0);
result = 31 * result + (canGoBackward ? 1 : 0);
result = 31 * result + (buttonCtaLabel != null ? buttonCtaLabel.hashCode() : 0);
result = 31 * result + buttonCtaLabelRes;
result = 31 * result + (buttonCtaClickListener != null ? buttonCtaClickListener.hashCode() : 0);
return result;
}

public static class Builder{
private Fragment fragment;
@ColorRes
Expand Down Expand Up @@ -197,13 +230,12 @@ public FragmentSlideFragment() {
}

public static FragmentSlideFragment newInstance(@LayoutRes int layoutRes, @StyleRes int themeRes) {
FragmentSlideFragment fragment = new FragmentSlideFragment();

Bundle arguments = new Bundle();
arguments.putInt(ARGUMENT_LAYOUT_RES, layoutRes);
arguments.putInt(ARGUMENT_THEME_RES, themeRes);
fragment.setArguments(arguments);

FragmentSlideFragment fragment = new FragmentSlideFragment();
fragment.setArguments(arguments);
return fragment;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,31 @@
import com.heinrichreimersoftware.materialintro.view.parallax.ParallaxSlideFragment;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class SimpleSlide implements Slide, RestorableSlide, ButtonCtaSlide {

private static final int DEFAULT_PERMISSIONS_REQUEST_CODE = 34; //Random number
private SimpleSlideFragment fragment;


private final CharSequence title;
@StringRes
private final int titleRes;
private final CharSequence description;
@StringRes
private final int descriptionRes;
@DrawableRes
private final int imageRes;
@LayoutRes
private final int layoutRes;


@ColorRes
private final int background;
private final int backgroundRes;
@ColorRes
private final int backgroundDark;
private final int backgroundDarkRes;
private final boolean canGoForward;
private final boolean canGoBackward;
private String[] permissions;
Expand All @@ -48,9 +63,15 @@ public class SimpleSlide implements Slide, RestorableSlide, ButtonCtaSlide {
protected SimpleSlide(Builder builder) {
fragment = SimpleSlideFragment.newInstance(builder.title, builder.titleRes,
builder.description, builder.descriptionRes, builder.imageRes,
builder.background, builder.layoutRes, builder.permissionsRequestCode);
background = builder.background;
backgroundDark = builder.backgroundDarkRes;
builder.backgroundRes, builder.layoutRes, builder.permissionsRequestCode);
title = builder.title;
titleRes = builder.titleRes;
description = builder.description;
descriptionRes = builder.descriptionRes;
imageRes = builder.imageRes;
layoutRes = builder.layoutRes;
backgroundRes = builder.backgroundRes;
backgroundDarkRes = builder.backgroundDarkRes;
canGoForward = builder.canGoForward;
canGoBackward = builder.canGoBackward;
permissions = builder.permissions;
Expand All @@ -74,12 +95,12 @@ public void setFragment(Fragment fragment) {

@Override
public int getBackground() {
return background;
return backgroundRes;
}

@Override
public int getBackgroundDark() {
return backgroundDark;
return backgroundDarkRes;
}

@Override
Expand Down Expand Up @@ -154,9 +175,59 @@ private synchronized void updatePermissions() {
}
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

SimpleSlide that = (SimpleSlide) o;

if (titleRes != that.titleRes) return false;
if (descriptionRes != that.descriptionRes) return false;
if (imageRes != that.imageRes) return false;
if (layoutRes != that.layoutRes) return false;
if (backgroundRes != that.backgroundRes) return false;
if (backgroundDarkRes != that.backgroundDarkRes) return false;
if (canGoForward != that.canGoForward) return false;
if (canGoBackward != that.canGoBackward) return false;
if (permissionsRequestCode != that.permissionsRequestCode) return false;
if (buttonCtaLabelRes != that.buttonCtaLabelRes) return false;
if (fragment != null ? !fragment.equals(that.fragment) : that.fragment != null)
return false;
if (title != null ? !title.equals(that.title) : that.title != null) return false;
if (description != null ? !description.equals(that.description) : that.description != null)
return false;
if (!Arrays.equals(permissions, that.permissions)) return false;
if (buttonCtaLabel != null ? !buttonCtaLabel.equals(that.buttonCtaLabel) : that.buttonCtaLabel != null)
return false;
return buttonCtaClickListener != null ? buttonCtaClickListener.equals(that.buttonCtaClickListener) : that.buttonCtaClickListener == null;

}

@Override
public int hashCode() {
int result = fragment != null ? fragment.hashCode() : 0;
result = 31 * result + (title != null ? title.hashCode() : 0);
result = 31 * result + titleRes;
result = 31 * result + (description != null ? description.hashCode() : 0);
result = 31 * result + descriptionRes;
result = 31 * result + imageRes;
result = 31 * result + layoutRes;
result = 31 * result + backgroundRes;
result = 31 * result + backgroundDarkRes;
result = 31 * result + (canGoForward ? 1 : 0);
result = 31 * result + (canGoBackward ? 1 : 0);
result = 31 * result + Arrays.hashCode(permissions);
result = 31 * result + permissionsRequestCode;
result = 31 * result + (buttonCtaLabel != null ? buttonCtaLabel.hashCode() : 0);
result = 31 * result + buttonCtaLabelRes;
result = 31 * result + (buttonCtaClickListener != null ? buttonCtaClickListener.hashCode() : 0);
return result;
}

public static class Builder {
@ColorRes
private int background = 0;
private int backgroundRes = 0;
@ColorRes
private int backgroundDarkRes = 0;
private CharSequence title = null;
Expand All @@ -180,7 +251,7 @@ public static class Builder {
private int permissionsRequestCode = DEFAULT_PERMISSIONS_REQUEST_CODE;

public Builder background(@ColorRes int backgroundRes) {
this.background = backgroundRes;
this.backgroundRes = backgroundRes;
return this;
}

Expand Down Expand Up @@ -308,7 +379,7 @@ public Builder buttonCtaClickListener(View.OnClickListener buttonCtaClickListene
}

public SimpleSlide build() {
if (background == 0)
if (backgroundRes == 0)
throw new IllegalArgumentException("You must set a background.");
return new SimpleSlide(this);
}
Expand Down Expand Up @@ -340,7 +411,6 @@ public static SimpleSlideFragment newInstance(CharSequence title, @StringRes int
CharSequence description, @StringRes int descriptionRes,
@DrawableRes int imageRes, @ColorRes int backgroundRes,
@LayoutRes int layout, int permissionsRequestCode) {
SimpleSlideFragment fragment = new SimpleSlideFragment();
Bundle arguments = new Bundle();
arguments.putCharSequence(ARGUMENT_TITLE, title);
arguments.putInt(ARGUMENT_TITLE_RES, titleRes);
Expand All @@ -350,6 +420,8 @@ public static SimpleSlideFragment newInstance(CharSequence title, @StringRes int
arguments.putInt(ARGUMENT_BACKGROUND_RES, backgroundRes);
arguments.putInt(ARGUMENT_LAYOUT_RES, layout);
arguments.putInt(ARGUMENT_PERMISSIONS_REQUEST_CODE, permissionsRequestCode);

SimpleSlideFragment fragment = new SimpleSlideFragment();
fragment.setArguments(arguments);

return fragment;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;

import com.heinrichreimersoftware.materialintro.app.SlideFragment;
Expand All @@ -13,7 +13,7 @@
import java.util.Collection;
import java.util.List;

public class SlideAdapter extends FragmentStatePagerAdapter {
public class SlideAdapter extends FragmentPagerAdapter {
private List<Slide> data = new ArrayList<>();
private FragmentManager fragmentManager;

Expand All @@ -30,24 +30,49 @@ public SlideAdapter(FragmentManager fragmentManager, @NonNull Collection<? exten
}

public void addSlide(int location, Slide object) {
data.add(location, object);
if (!data.contains(object)) {
data.add(location, object);
}
}

public boolean addSlide(Slide object) {
if (data.contains(object)) {
return false;
}
boolean modified = data.add(object);
if (modified) notifyDataSetChanged();
if (modified) {
notifyDataSetChanged();
}
return modified;
}

public boolean addSlides(int location, @NonNull Collection<? extends Slide> collection) {
boolean modified = data.addAll(location, collection);
if (modified) notifyDataSetChanged();
boolean modified = false;
int i = 0;
for (Slide slide : collection) {
if (!data.contains(slide)) {
data.add(location + i, slide);
i++;
modified = true;
}
}
if (modified) {
notifyDataSetChanged();
}
return modified;
}

public boolean addSlides(@NonNull Collection<? extends Slide> collection) {
boolean modified = data.addAll(collection);
if (modified) notifyDataSetChanged();
boolean modified = false;
for (Slide slide : collection) {
if (!data.contains(slide)) {
data.add(slide);
modified = true;
}
}
if (modified) {
notifyDataSetChanged();
}
return modified;
}

Expand All @@ -59,9 +84,8 @@ public boolean clearSlides() {
return false;
}

@SuppressWarnings("SuspiciousMethodCalls")
public boolean containsSlide(Object object) {
return data.contains(object);
return object instanceof Slide && data.contains(object);
}

public boolean containsSlides(@NonNull Collection<?> collection) {
Expand Down Expand Up @@ -90,6 +114,11 @@ public int getItemPosition(Object object) {

@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = getItem(position);
if (fragment.isAdded()) {
return fragment;
}

Fragment instantiatedFragment = (Fragment) super.instantiateItem(container, position);
Slide slide = data.get(position);
if (slide instanceof RestorableSlide) {
Expand Down Expand Up @@ -183,6 +212,9 @@ public boolean retainSlides(@NonNull Collection<?> collection) {
}

public Slide setSlide(int location, Slide object) {
if (!data.contains(object)) {
return data.set(location, object);
}
return data.set(location, object);
}

Expand Down

0 comments on commit 69c7cf1

Please sign in to comment.