package nodomain.freeyourgadget.gadgetbridge.model;

/**
 * Created by steffen on 07.06.16.
 */
public class MusicStateSpec {
    public static final int STATE_PLAYING = 0;
    public static final int STATE_PAUSED  = 1;
    public static final int STATE_STOPPED = 2;
    public static final int STATE_UNKNOWN = 3;

    public byte state;
    public int position;
    public int playRate;
    public byte shuffle;
    public byte repeat;

    public MusicStateSpec() {

    }

    public MusicStateSpec(MusicStateSpec old) {
        this.state = old.state;
        this.position = old.position;
        this.playRate = old.playRate;
        this.shuffle = old.shuffle;
        this.repeat = old.repeat;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof MusicStateSpec)) {
            return false;
        }
        MusicStateSpec stateSpec = (MusicStateSpec) obj;

        return this.state == stateSpec.state &&
                Math.abs(this.position - stateSpec.position)<=2 &&
                this.playRate == stateSpec.playRate &&
                this.shuffle == stateSpec.shuffle &&
                this.repeat == stateSpec.repeat;
    }
}

@@ -1237,11 +1237,355 @@
 t;%0A    %7D
+%0A%0A    @Override%0A    public int hashCode() %7B%0A        int result = (int) state;%0A// ignore the position -- it is taken into account in equals()%0A//        result = 31 * result + position;%0A        result = 31 * result + playRate;%0A        result = 31 * result + (int) shuffle;%0A        result = 31 * result + (int) repeat;%0A        return result;%0A    %7D
 %0A%7D%0A

Implement hashCode() when you implement equals()!