Skip to content

Commit 1fb793e

Browse files
committed
add interval as preference
1 parent 3a68269 commit 1fb793e

File tree

9 files changed

+114
-3
lines changed

9 files changed

+114
-3
lines changed

Diff for: .idea/modules.xml

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: app/src/main/AndroidManifest.xml

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
</intent-filter>
2424
</activity>
2525
<activity android:name=".DonateActivity"/>
26+
<activity android:name=".SettingsActivity"/>
2627

2728
<!--use your own api key for fabric-->
2829
<meta-data

Diff for: app/src/main/java/com/naman14/algovisualizer/MainActivity.java

+4
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@ public void run() {
158158
startActivity(intent);
159159
break;
160160
case 2:
161+
startActivity(new Intent(MainActivity.this, SettingsActivity.class));
162+
break;
163+
case 3:
161164
startActivity(new Intent(MainActivity.this, DonateActivity.class));
162165
break;
163166
}
@@ -230,6 +233,7 @@ private void prepareListData() {
230233
List<String> heading10 = new ArrayList<String>();
231234
heading10.add("About");
232235
heading10.add("Fork on Github");
236+
heading10.add("Settings");
233237

234238
try {
235239
if (BillingProcessor.isIabServiceAvailable(this)) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.naman14.algovisualizer;
2+
3+
import android.os.Bundle;
4+
import android.support.annotation.Nullable;
5+
import android.support.v7.app.AppCompatActivity;
6+
import android.view.MenuItem;
7+
8+
/**
9+
* Created by naman on 13/9/17.
10+
*/
11+
12+
public class SettingsActivity extends AppCompatActivity {
13+
14+
@Override
15+
protected void onCreate(@Nullable Bundle savedInstanceState) {
16+
super.onCreate(savedInstanceState);
17+
setContentView(R.layout.activity_settings);
18+
19+
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
20+
getSupportActionBar().setTitle("Settings");
21+
getFragmentManager().beginTransaction().replace(R.id.fragment_container, new SettingsFragment()).commit();
22+
}
23+
24+
@Override
25+
public boolean onOptionsItemSelected(MenuItem item) {
26+
if (item.getItemId() == android.R.id.home)
27+
super.onBackPressed();
28+
return super.onOptionsItemSelected(item);
29+
}
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.naman14.algovisualizer;
2+
3+
import android.content.SharedPreferences;
4+
import android.os.Bundle;
5+
import android.preference.EditTextPreference;
6+
import android.preference.Preference;
7+
import android.preference.PreferenceFragment;
8+
import android.preference.PreferenceManager;
9+
import android.support.annotation.Nullable;
10+
11+
import com.naman14.algovisualizer.algorithm.Algorithm;
12+
13+
/**
14+
* Created by naman on 13/9/17.
15+
*/
16+
17+
public class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
18+
19+
public static final String KEY_INTERVAL = "preference_interval";
20+
21+
SharedPreferences preferences;
22+
23+
@Override
24+
public void onCreate(@Nullable Bundle savedInstanceState) {
25+
super.onCreate(savedInstanceState);
26+
27+
addPreferencesFromResource(R.xml.preferences);
28+
29+
preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
30+
preferences.registerOnSharedPreferenceChangeListener(this);
31+
findPreference(KEY_INTERVAL).setSummary(preferences.getString(KEY_INTERVAL, "500"));
32+
33+
}
34+
35+
@Override
36+
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
37+
Preference p = findPreference(key);
38+
if (p instanceof EditTextPreference) {
39+
EditTextPreference editTextPref = (EditTextPreference) p;
40+
p.setSummary(editTextPref.getText());
41+
Algorithm.setInterval(Integer.parseInt(editTextPref.getText()));
42+
}
43+
}
44+
}

Diff for: app/src/main/java/com/naman14/algovisualizer/VisualAlgoFragment.java

+4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package com.naman14.algovisualizer;
1616

1717
import android.os.Bundle;
18+
import android.preference.PreferenceManager;
1819
import android.support.annotation.Nullable;
1920
import android.support.design.widget.AppBarLayout;
2021
import android.support.design.widget.CoordinatorLayout;
@@ -126,6 +127,7 @@ public void onTabReSelected(int position) {
126127
algoFragment = AlgoDescriptionFragment.newInstance(getArguments().getString(Algorithm.KEY_ALGORITHM));
127128

128129
setupFragment(getArguments().getString(Algorithm.KEY_ALGORITHM));
130+
129131
return rootView;
130132
}
131133

@@ -254,6 +256,8 @@ public void setupFragment(String algorithmKey) {
254256
visualizer = null;
255257
}
256258

259+
Algorithm.setInterval(Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(getActivity())
260+
.getString(SettingsFragment.KEY_INTERVAL, "500")));
257261
algorithm.setStarted(false);
258262
fab.setImageResource(R.drawable.ic_play_arrow_white_24dp);
259263
logFragment.clearLog();

Diff for: app/src/main/java/com/naman14/algovisualizer/algorithm/Algorithm.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
import android.os.Handler;
1919
import android.os.HandlerThread;
2020
import android.os.Message;
21+
import android.preference.PreferenceManager;
2122

2223
import com.naman14.algovisualizer.AlgoCompletionListener;
2324
import com.naman14.algovisualizer.LogFragment;
25+
import com.naman14.algovisualizer.SettingsFragment;
2426

2527
import java.util.concurrent.atomic.AtomicBoolean;
2628

@@ -44,7 +46,6 @@ public class Algorithm extends HandlerThread {
4446
public static final String DIJKSTRA = "dijkstra";
4547
public static final String BELLMAN_FORD = "bellman_ford";
4648

47-
4849
public LogFragment logFragment;
4950
public Activity activity;
5051
public AlgoCompletionListener completionListener;
@@ -56,12 +57,14 @@ public class Algorithm extends HandlerThread {
5657

5758
private Handler workerHandler;
5859

60+
private static int INTERVAL = 500;
61+
5962
public Algorithm() {
6063
super("");
6164
}
6265

6366
public void sleep() {
64-
sleepFor(500);
67+
sleepFor(INTERVAL);
6568
}
6669

6770
public void sleepFor(long time) {
@@ -193,4 +196,9 @@ public void run() {
193196
});
194197
}
195198
}
199+
200+
public static void setInterval(int interval) {
201+
INTERVAL = interval;
202+
}
203+
196204
}

Diff for: app/src/main/res/layout/activity_settings.xml

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:orientation="vertical" android:layout_width="match_parent"
4+
android:layout_height="match_parent">
5+
6+
<FrameLayout
7+
android:id="@+id/fragment_container"
8+
android:layout_width="match_parent"
9+
android:layout_height="match_parent" />
10+
11+
</FrameLayout>

Diff for: app/src/main/res/xml/preferences.xml

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
3+
4+
<EditTextPreference
5+
android:defaultValue="500"
6+
android:inputType="numberSigned"
7+
android:key="preference_interval"
8+
android:title="Interval (delay between each step in ms)" />
9+
10+
</PreferenceScreen>

0 commit comments

Comments
 (0)