aboutsummaryrefslogtreecommitdiff
path: root/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/AbstractFragmentsActivity.java
blob: 154c2e48701a30069da1e9c4a3bc45295c04429c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.davemorrissey.labs.subscaleview.test;

import android.app.ActionBar;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
import android.view.MenuItem;

import java.util.List;

public abstract class AbstractFragmentsActivity extends FragmentActivity {

    private static final String BUNDLE_PAGE = "page";

    private int page;

    private final int title;
    private final int layout;
    private final List<Page> notes;

    protected abstract void onPageChanged(int page);

    protected AbstractFragmentsActivity(int title, int layout, List<Page> notes) {
        this.title = title;
        this.layout = layout;
        this.notes = notes;
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(layout);
        ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            actionBar.setTitle(getString(title));
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
        if (savedInstanceState != null && savedInstanceState.containsKey(BUNDLE_PAGE)) {
            page = savedInstanceState.getInt(BUNDLE_PAGE);
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        updateNotes();
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(BUNDLE_PAGE, page);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        finish();
        return true;
    }

    public void next() {
        page++;
        updateNotes();
    }

    public void previous() {
        page--;
        updateNotes();
    }

    private void updateNotes() {
        if (page > notes.size() - 1) {
            return;
        }
        ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            actionBar.setSubtitle(notes.get(page).getSubtitle());
        }
        onPageChanged(page);
    }

}