Skip to content

Commit 1de26e8

Browse files
committed
Theme select listener
1 parent b51b450 commit 1de26e8

File tree

9 files changed

+63
-21
lines changed

9 files changed

+63
-21
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
<activity
126126
android:name="jackpal.androidterm.TermPreferencesActivity"
127127
android:label="@string/preferences" />
128-
128+
<activity android:name="com.duy.editor.EditorThemeActivity" />
129129
</application>
130130

131131
</manifest>

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,10 @@ public boolean onOptionsItemSelected(MenuItem item) {
166166
case R.id.action_premium:
167167
clickUpgrade();
168168
break;
169+
170+
case R.id.action_editor_color_scheme:
171+
startActivity(new Intent(this, EditorThemeActivity.class));
172+
break;
169173
}
170174
return super.onOptionsItemSelected(item);
171175
}
Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
package com.duy.ide.editor.theme;
1+
package com.duy.editor;
22

33
import android.content.SharedPreferences;
44
import android.os.Bundle;
55
import android.support.annotation.Nullable;
6+
import android.support.design.widget.Snackbar;
67
import android.support.v7.widget.DividerItemDecoration;
78
import android.support.v7.widget.LinearLayoutManager;
89
import android.support.v7.widget.RecyclerView;
@@ -11,16 +12,22 @@
1112
import android.widget.AdapterView;
1213
import android.widget.Spinner;
1314

14-
import com.duy.ide.editor.editor.R;
15+
import com.duy.ccppcompiler.R;
16+
import com.duy.ccppcompiler.ui.dialogs.PremiumDialog;
17+
import com.duy.common.purchase.InAppPurchaseHelper;
18+
import com.duy.common.purchase.Premium;
19+
import com.duy.ide.editor.theme.ThemeAdapter;
20+
import com.duy.ide.editor.theme.ThemeLoader;
21+
import com.duy.ide.editor.theme.model.EditorTheme;
1522
import com.jecelyin.editor.v2.Preferences;
1623
import com.jecelyin.editor.v2.ThemeSupportActivity;
1724

18-
public class EditorThemeActivity extends ThemeSupportActivity {
19-
private static final String EXTRA_USE_LIGHT_THEME = "EXTRA_USE_LIGHT_THEME";
25+
public class EditorThemeActivity extends ThemeSupportActivity implements ThemeAdapter.OnThemeSelectListener {
2026
private RecyclerView mRecyclerView;
2127
private ThemeAdapter mThemeAdapter;
2228
private Spinner mSpinner;
2329
private Preferences mPreferences;
30+
private InAppPurchaseHelper mInAppPurchaseHelper;
2431

2532
@Override
2633
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -37,7 +44,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
3744
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
3845
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
3946
mThemeAdapter = new ThemeAdapter(this);
40-
47+
mThemeAdapter.setOnThemeSelectListener(this);
4148
mRecyclerView.setAdapter(mThemeAdapter);
4249
mPreferences = Preferences.getInstance(this);
4350

@@ -57,6 +64,7 @@ public void onNothingSelected(AdapterView<?> parent) {
5764
}
5865
});
5966

67+
mInAppPurchaseHelper = new InAppPurchaseHelper(this);
6068
mPreferences.registerOnSharedPreferenceChangeListener(this);
6169
}
6270

@@ -69,16 +77,24 @@ private void useLightTheme(boolean useLightTheme) {
6977

7078
@Override
7179
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
72-
if (key.equals(getString(R.string.pref_current_theme))) {
73-
74-
} else {
75-
super.onSharedPreferenceChanged(sharedPreferences, key);
76-
}
80+
super.onSharedPreferenceChanged(sharedPreferences, key);
7781
}
7882

7983
@Override
8084
protected void onDestroy() {
8185
super.onDestroy();
82-
Preferences.getInstance(this).unregisterOnSharedPreferenceChangeListener(this);
86+
mPreferences.unregisterOnSharedPreferenceChangeListener(this);
87+
}
88+
89+
@Override
90+
public void onThemeSelected(EditorTheme theme) {
91+
if (Premium.isPremiumUser(this)) {
92+
mPreferences.setEditorTheme(theme.getName());
93+
String text = getString(R.string.selected_theme, theme.getName());
94+
Snackbar.make(mRecyclerView, text, Snackbar.LENGTH_SHORT).show();
95+
} else {
96+
PremiumDialog premiumDialog = new PremiumDialog(this, mInAppPurchaseHelper);
97+
premiumDialog.show();
98+
}
8399
}
84100
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,7 @@
3232
2. Editor color schemes\n
3333
3. Change editor fonts
3434
</string>
35+
3536
<string name="button_purchase_restore">Restore</string>
37+
<string name="selected_theme">Selected %s</string>
3638
</resources>

editor-view/src/main/AndroidManifest.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,5 @@
2323
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2424

2525
<application android:supportsRtl="false">
26-
<activity android:name="com.duy.ide.editor.theme.EditorThemeActivity" />
2726
</application>
2827
</manifest>

editor-view/src/main/java/com/duy/ide/editor/SimpleEditorActivity.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,13 @@
4848
import com.duy.ide.editor.dialogs.DialogNewFile;
4949
import com.duy.ide.editor.editor.BuildConfig;
5050
import com.duy.ide.editor.editor.R;
51-
import com.duy.ide.editor.theme.EditorThemeActivity;
5251
import com.duy.ide.filemanager.FileManager;
5352
import com.jecelyin.common.utils.DLog;
5453
import com.jecelyin.common.utils.IOUtils;
5554
import com.jecelyin.common.utils.SysUtils;
5655
import com.jecelyin.common.utils.UIUtils;
57-
import com.jecelyin.editor.v2.ThemeSupportActivity;
5856
import com.jecelyin.editor.v2.Preferences;
57+
import com.jecelyin.editor.v2.ThemeSupportActivity;
5958
import com.jecelyin.editor.v2.common.Command;
6059
import com.jecelyin.editor.v2.dialog.CharsetsDialog;
6160
import com.jecelyin.editor.v2.dialog.GotoLineDialog;
@@ -437,9 +436,7 @@ public void run() {
437436
StoreUtil.shareThisApp(this);
438437
} else if (id == R.id.action_rate) {
439438
StoreUtil.gotoPlayStore(this, getPackageName());
440-
} else if (id == R.id.action_editor_color_scheme){
441-
startActivity(new Intent(this, EditorThemeActivity.class));
442-
}else {
439+
} else {
443440
commandEnum = MenuFactory.getInstance(this).idToCommandEnum(id);
444441
if (commandEnum != Command.CommandEnum.NONE)
445442
doCommand(new Command(commandEnum));

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

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
public class ThemeAdapter extends RecyclerView.Adapter<ThemeAdapter.ViewHolder> implements FastScrollRecyclerView.SectionedAdapter {
2828
private final ArrayList<EditorTheme> mEditorThemes;
2929
private Context mContext;
30+
private OnThemeSelectListener onThemeSelectListener;
31+
3032

3133
public ThemeAdapter(Context context) {
3234
mContext = context;
@@ -40,7 +42,6 @@ public int compare(EditorTheme o1, EditorTheme o2) {
4042
});
4143
}
4244

43-
4445
@NonNull
4546
@Override
4647
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
@@ -52,7 +53,7 @@ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
5253
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
5354
final EditorTheme editorTheme = mEditorThemes.get(position);
5455

55-
String title = makeTitle(position, editorTheme);
56+
final String title = makeTitle(position, editorTheme);
5657
holder.mTxtName.setText(title);
5758
EditAreaView editorView = holder.mEditorView;
5859

@@ -72,6 +73,15 @@ public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
7273
HashMap<Integer, ArrayList<? extends CharacterStyle>> colorsMap = new HashMap<>();
7374
int lineCount = buffer.getLineManager().getLineCount();
7475
highlighter.highlight(buffer, editorTheme, colorsMap, editorView.getText(), 0, lineCount - 1);
76+
77+
holder.mBtnSelect.setOnClickListener(new View.OnClickListener() {
78+
@Override
79+
public void onClick(View v) {
80+
if (onThemeSelectListener != null){
81+
onThemeSelectListener.onThemeSelected(editorTheme);
82+
}
83+
}
84+
});
7585
}
7686

7787
private String makeTitle(int position, EditorTheme editorTheme) {
@@ -97,7 +107,6 @@ private String refine(String name) {
97107
return builder.toString();
98108
}
99109

100-
101110
@Override
102111
public int getItemCount() {
103112
return mEditorThemes.size();
@@ -144,14 +153,24 @@ public String getSectionName(int position) {
144153
return mEditorThemes.get(position).getName();
145154
}
146155

156+
public void setOnThemeSelectListener(OnThemeSelectListener onThemeSelectListener) {
157+
this.onThemeSelectListener = onThemeSelectListener;
158+
}
159+
160+
public interface OnThemeSelectListener {
161+
void onThemeSelected(EditorTheme theme);
162+
}
163+
147164
static class ViewHolder extends RecyclerView.ViewHolder {
165+
View mBtnSelect;
148166
EditAreaView mEditorView;
149167
TextView mTxtName;
150168

151169
public ViewHolder(View itemView) {
152170
super(itemView);
153171
mEditorView = itemView.findViewById(R.id.editor_view);
154172
mTxtName = itemView.findViewById(R.id.txt_name);
173+
mBtnSelect = itemView.findViewById(R.id.btn_select);
155174
}
156175
}
157176
}

editor-view/src/main/java/com/jecelyin/editor/v2/Preferences.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,10 @@ public boolean isUseLightTheme() {
385385
return getTheme() == 0;
386386
}
387387

388+
public void setEditorTheme(String name) {
389+
preferences.edit().putString(context.getString(R.string.pref_theme_editor_theme), name).apply();
390+
}
391+
388392
@IntDef({SCREEN_ORIENTATION_AUTO, SCREEN_ORIENTATION_LANDSCAPE, SCREEN_ORIENTATION_PORTRAIT})
389393
public @interface ScreenOrientation {
390394
}

editor-view/src/main/res/values/do_not_translate.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
<string name="pref_key_fullscreen" translatable="false">fullscreen_mode</string>
44
<string name="pref_auto_save" translatable="false">pref_auto_save</string>
55
<string name="pref_current_theme" translatable="false">pref_current_theme</string>
6+
<string name="pref_theme_editor_theme">pref_key_editor_theme</string>
67
</resources>

0 commit comments

Comments
 (0)