Skip to content

Commit 9faf13b

Browse files
committed
Improve theme preview
1 parent baa7210 commit 9faf13b

File tree

4 files changed

+62
-20
lines changed

4 files changed

+62
-20
lines changed

app/src/main/java/com/duy/editor/EditorThemeActivity.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import com.duy.common.purchase.InAppPurchaseHelper;
1818
import com.duy.common.purchase.Premium;
1919
import com.duy.ide.editor.theme.ThemeAdapter;
20-
import com.duy.ide.editor.theme.ThemeLoader;
2120
import com.duy.ide.editor.theme.model.EditorTheme;
2221
import com.jecelyin.editor.v2.Preferences;
2322
import com.jecelyin.editor.v2.ThemeSupportActivity;
@@ -32,21 +31,19 @@ public class EditorThemeActivity extends ThemeSupportActivity implements ThemeAd
3231
@Override
3332
protected void onCreate(@Nullable Bundle savedInstanceState) {
3433
super.onCreate(savedInstanceState);
35-
3634
setContentView(R.layout.activity_editor_theme);
3735
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
3836
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
3937
setTitle("");
40-
41-
ThemeLoader.init(this);
38+
mPreferences = Preferences.getInstance(this);
4239

4340
mRecyclerView = findViewById(R.id.recyclerView);
4441
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
4542
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
4643
mThemeAdapter = new ThemeAdapter(this);
4744
mThemeAdapter.setOnThemeSelectListener(this);
4845
mRecyclerView.setAdapter(mThemeAdapter);
49-
mPreferences = Preferences.getInstance(this);
46+
mRecyclerView.scrollToPosition(findThemeIndex(mPreferences.getEditorTheme()));
5047

5148
boolean useLightTheme = mPreferences.isUseLightTheme();
5249

@@ -68,6 +65,15 @@ public void onNothingSelected(AdapterView<?> parent) {
6865
mPreferences.registerOnSharedPreferenceChangeListener(this);
6966
}
7067

68+
private int findThemeIndex(EditorTheme editorTheme) {
69+
int position = mThemeAdapter.getPosition(editorTheme);
70+
if (position < 0) {
71+
return 0;
72+
}
73+
return position;
74+
}
75+
76+
7177
private void useLightTheme(boolean useLightTheme) {
7278
if (mPreferences.isUseLightTheme() != useLightTheme) {
7379
mPreferences.setTheme(useLightTheme ? 0 : 1);

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@
3535
</string>
3636

3737
<string name="button_purchase_restore">Restore</string>
38-
<string name="selected_theme">Selected %s</string>
38+
<string name="selected_theme">Selected %s. Restart app to apply theme.</string>
3939
</resources>

editor-view/src/main/java/com/duy/ide/editor/theme/ThemeAdapter.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public class ThemeAdapter extends RecyclerView.Adapter<ThemeAdapter.ViewHolder>
2929
private Context mContext;
3030
private OnThemeSelectListener onThemeSelectListener;
3131

32-
3332
public ThemeAdapter(Context context) {
3433
mContext = context;
3534
ThemeLoader.init(context);
@@ -42,6 +41,10 @@ public int compare(EditorTheme o1, EditorTheme o2) {
4241
});
4342
}
4443

44+
public int getPosition(EditorTheme editorTheme) {
45+
return mEditorThemes.indexOf(editorTheme);
46+
}
47+
4548
@NonNull
4649
@Override
4750
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
@@ -77,23 +80,15 @@ public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
7780
holder.mBtnSelect.setOnClickListener(new View.OnClickListener() {
7881
@Override
7982
public void onClick(View v) {
80-
if (onThemeSelectListener != null){
83+
if (onThemeSelectListener != null) {
8184
onThemeSelectListener.onThemeSelected(editorTheme);
8285
}
8386
}
8487
});
8588
}
8689

8790
private String makeTitle(int position, EditorTheme editorTheme) {
88-
StringBuilder builder = new StringBuilder(String.valueOf(position + 1));
89-
builder.append(". ");
90-
builder.append(editorTheme.getName());
91-
for (int i = 0; i < builder.length(); i++) {
92-
if (builder.charAt(i) == ' ' && i + 1 < builder.length()) {
93-
builder.setCharAt(i + 1, Character.toUpperCase(builder.charAt(i + 1)));
94-
}
95-
}
96-
return builder.toString();
91+
return (position + 1) + ". " + editorTheme.getName();
9792
}
9893

9994
@Override
@@ -151,7 +146,7 @@ public interface OnThemeSelectListener {
151146
}
152147

153148
static class ViewHolder extends RecyclerView.ViewHolder {
154-
View mBtnSelect;
149+
View mBtnSelect;
155150
EditAreaView mEditorView;
156151
TextView mTxtName;
157152

editor-view/src/main/java/com/duy/ide/editor/theme/model/EditorTheme.java

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.duy.ide.editor.theme.model;
22

33
import android.graphics.Color;
4+
import android.support.annotation.NonNull;
45

56
import com.duy.ide.editor.theme.SyntaxUtilities;
67
import com.jecelyin.common.utils.DLog;
78

9+
import java.util.Arrays;
810
import java.util.Properties;
911

1012

@@ -92,8 +94,19 @@ public String getName() {
9294
return name;
9395
}
9496

95-
public void setName(String name) {
96-
this.name = name;
97+
public void setName(@NonNull String name) {
98+
if (name.isEmpty()){
99+
return;
100+
}
101+
StringBuilder builder = new StringBuilder();
102+
builder.append(name.replace("-", " "));
103+
builder.setCharAt(0, Character.toUpperCase(builder.charAt(0)));
104+
for (int i = 0; i < builder.length(); i++) {
105+
if (builder.charAt(i) == ' ' && i + 1 < builder.length()) {
106+
builder.setCharAt(i + 1, Character.toUpperCase(builder.charAt(i + 1)));
107+
}
108+
}
109+
this.name = builder.toString();
97110
}
98111

99112
public String getFileName() {
@@ -104,6 +117,34 @@ public void setFileName(String fileName) {
104117
this.fileName = fileName;
105118
}
106119

120+
@Override
121+
public boolean equals(Object o) {
122+
if (this == o) return true;
123+
if (!(o instanceof EditorTheme)) return false;
124+
125+
EditorTheme that = (EditorTheme) o;
126+
127+
if (getGutterStyle() != null ? !getGutterStyle().equals(that.getGutterStyle()) : that.getGutterStyle() != null)
128+
return false;
129+
if (getWhiteSpaceStyle() != null ? !getWhiteSpaceStyle().equals(that.getWhiteSpaceStyle()) : that.getWhiteSpaceStyle() != null)
130+
return false;
131+
// Probably incorrect - comparing Object[] arrays with Arrays.equals
132+
if (!Arrays.equals(getSyntaxStyles(), that.getSyntaxStyles())) return false;
133+
if (getFileName() != null ? !getFileName().equals(that.getFileName()) : that.getFileName() != null)
134+
return false;
135+
return getName() != null ? getName().equals(that.getName()) : that.getName() == null;
136+
}
137+
138+
@Override
139+
public int hashCode() {
140+
int result = getGutterStyle() != null ? getGutterStyle().hashCode() : 0;
141+
result = 31 * result + (getWhiteSpaceStyle() != null ? getWhiteSpaceStyle().hashCode() : 0);
142+
result = 31 * result + Arrays.hashCode(getSyntaxStyles());
143+
result = 31 * result + (getFileName() != null ? getFileName().hashCode() : 0);
144+
result = 31 * result + (getName() != null ? getName().hashCode() : 0);
145+
return result;
146+
}
147+
107148
public enum ThemeAttr {
108149
SCHEME_NAME("theme.name"),
109150
TYPE("theme.type"),

0 commit comments

Comments
 (0)