diff --git a/app/src/main/java/space/neothefox/laytray/IconService.java b/app/src/main/java/space/neothefox/laytray/IconService.java
index 95b0d76..fd8d19f 100644
--- a/app/src/main/java/space/neothefox/laytray/IconService.java
+++ b/app/src/main/java/space/neothefox/laytray/IconService.java
@@ -8,6 +8,7 @@ import android.app.NotificationManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
@@ -33,6 +34,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
private final AccessibilityServiceInfo serviceInfo = new AccessibilityServiceInfo();
private SharedPreferences layouts;
+ private SharedPreferences iconsPrefs;
private SharedPreferences options;
private String lastToast;
@@ -50,6 +52,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
serviceInfo.notificationTimeout = 100;
this.setServiceInfo(serviceInfo);
layouts = getSharedPreferences("layouts", 0);
+ iconsPrefs = getSharedPreferences("icons", 0);
options = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
lastToast = "EMPT";
options.registerOnSharedPreferenceChangeListener(this);
@@ -90,11 +93,20 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
layoutsEditor.apply();
textIcon = "??";
}
- Icon smallIcon = Icon.createWithBitmap(textAsBitmap(textIcon,
- Integer.parseInt(options.getString("textSize", "48")),
- options.getBoolean("textFakeBold", true),
- Integer.parseInt(options.getString("textMode", "0")),
- Color.WHITE));
+
+ Icon smallIcon;
+
+ if (Integer.parseInt(options.getString("textMode", "0")) == 4) {
+ // Icon selected
+ smallIcon = Icon.createWithResource(this, iconsPrefs.getInt(toast, R.drawable.ic_language_default));
+ } else {
+ // Text variations
+ smallIcon = Icon.createWithBitmap(textAsBitmap(textIcon,
+ Integer.parseInt(options.getString("textSize", "48")),
+ options.getBoolean("textFakeBold", true),
+ Integer.parseInt(options.getString("textMode", "0")),
+ Color.WHITE));
+ }
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
{
@@ -104,6 +116,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener
.setOngoing(true)
.setVisibility(Notification.VISIBILITY_SECRET)
.build();
+
}
else
{
diff --git a/app/src/main/java/space/neothefox/laytray/IconsAdapter.java b/app/src/main/java/space/neothefox/laytray/IconsAdapter.java
new file mode 100644
index 0000000..c4d7c9a
--- /dev/null
+++ b/app/src/main/java/space/neothefox/laytray/IconsAdapter.java
@@ -0,0 +1,56 @@
+package space.neothefox.laytray;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.Spinner;
+
+public class IconsAdapter extends BaseAdapter {
+ private Context context;
+ private int flags[];
+ private LayoutInflater inflter;
+
+ public IconsAdapter(Context applicationContext, int[] flags) {
+ this.context = applicationContext;
+ this.flags = flags;
+ inflter = (LayoutInflater.from(applicationContext));
+ }
+
+ @Override
+ public int getCount() {
+ return flags.length;
+ }
+
+ @Override
+ public Object getItem(int i) {
+ return flags[i];
+ }
+
+ @Override
+ public long getItemId(int i) {
+ return 0;
+ }
+
+ public int getPosition(int value) {
+ int position = -1;
+ for (int i = 0; i < flags.length; i++) {
+ if (value == flags[i]) {
+ position = i;
+ break;
+ }
+ }
+ return position;
+ }
+
+ @Override
+ public View getView(int i, View convertView, ViewGroup parent) {
+ convertView = inflter.inflate(R.layout.spinner_item, null);
+ ImageView icon = (ImageView) convertView.findViewById(R.id.imageView);
+ icon.setImageResource(flags[i]);
+
+ return convertView;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/space/neothefox/laytray/MainActivity.java b/app/src/main/java/space/neothefox/laytray/MainActivity.java
index 0a2c2be..bd08123 100644
--- a/app/src/main/java/space/neothefox/laytray/MainActivity.java
+++ b/app/src/main/java/space/neothefox/laytray/MainActivity.java
@@ -19,13 +19,14 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Space;
+import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
-
import java.util.Map;
public class MainActivity extends AppCompatActivity
@@ -35,6 +36,8 @@ implements View.OnClickListener, DialogInterface.OnClickListener, SharedPreferen
private LinearLayout layoutLister;
private SharedPreferences layouts;
+ private SharedPreferences iconsPrefs;
+ private boolean shouldRefresh = true;
@Override
protected void onCreate(Bundle savedInstanceState)
@@ -43,6 +46,7 @@ implements View.OnClickListener, DialogInterface.OnClickListener, SharedPreferen
setContentView(R.layout.activity_main);
layoutLister = findViewById(R.id.scrollLinearLayout);
layouts = getSharedPreferences("layouts", 0);
+ iconsPrefs = getSharedPreferences("icons", 0);
updateLayouts();
FloatingActionButton addButton = findViewById(R.id.floatingActionButton);
@@ -82,8 +86,13 @@ implements View.OnClickListener, DialogInterface.OnClickListener, SharedPreferen
entry.getValue().toString());
i++;
- if(!entry.getKey().equals("EMPT"))
- addLine(layoutLister, entry.getKey(), entry.getValue().toString());
+ if(!entry.getKey().equals("EMPT")) {
+ addLine(
+ layoutLister, entry.getKey(),
+ entry.getValue().toString(),
+ iconsPrefs.getInt(entry.getKey(), R.drawable.ic_language_default)
+ );
+ }
}
if(i == 0)
populateLayouts();
@@ -97,14 +106,20 @@ implements View.OnClickListener, DialogInterface.OnClickListener, SharedPreferen
{
Log.d("map values", "Shared Prefs are empty");
SharedPreferences.Editor layoutsEditor = layouts.edit();
+ SharedPreferences.Editor iconsEditor = iconsPrefs.edit();
+ iconsEditor.clear();
layoutsEditor.clear();
layoutsEditor.putString("Русский", "RU");
layoutsEditor.putString("Буквы (АБВ)", "EN");
layoutsEditor.putString("EMPT", "??");
+
+ shouldRefresh = false;
+ iconsEditor.apply();
+ shouldRefresh = true;
layoutsEditor.apply();
}
- private void addLine(LinearLayout parent, String name, String icon)
+ private void addLine(LinearLayout parent, String name, String icon, int iconDrawableId)
{
final LinearLayout layoutLine = new LinearLayout(getApplicationContext());
layoutLine.setOrientation(LinearLayout.HORIZONTAL);
@@ -123,11 +138,29 @@ implements View.OnClickListener, DialogInterface.OnClickListener, SharedPreferen
layoutIcon.setText(icon);
layoutLine.addView(layoutIcon);
+
+ // Icons Dropdown
+ final int[] iconFlags = {
+ R.drawable.ic_language_default,
+ R.drawable.ic_flag_russia,
+ R.drawable.ic_flag_gb,
+ R.drawable.ic_flag_belarus,
+ R.drawable.ic_flag_ukr
+ };
+ IconsAdapter arrayAdapter = new IconsAdapter(this, iconFlags);
+ final Spinner iconSpinner = new Spinner(this);
+ iconSpinner.setAdapter(arrayAdapter);
+ iconSpinner.setSelection(arrayAdapter.getPosition(iconDrawableId));
+ layoutLine.addView(iconSpinner);
+ iconSpinner.setSelection(arrayAdapter.getPosition(iconDrawableId));
+
+
Space space = new Space(getApplicationContext());
space.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT, 2));
+ ViewGroup.LayoutParams.MATCH_PARENT, 2));
layoutLine.addView(space);
+
final Button removeButton = new Button(getApplicationContext());
removeButton.setText("➖");
removeButton.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
@@ -155,23 +188,35 @@ implements View.OnClickListener, DialogInterface.OnClickListener, SharedPreferen
if (count != 0)
{
SharedPreferences.Editor layoutsEditor = layouts.edit();
+ SharedPreferences.Editor iconsEditor = iconsPrefs.edit();
layoutsEditor.clear();
+ iconsEditor.clear();
for (int i=0; i < count; i++)
{
LinearLayout layoutLine = (LinearLayout)parent.getChildAt(i);
TextView layoutName = (TextView)layoutLine.getChildAt(0);
EditText layoutIcon = (EditText)layoutLine.getChildAt(1);
+ Spinner layoutDropdown = (Spinner)layoutLine.getChildAt(2);
String layoutNameValue = layoutName.getText().toString();
String layoutIconValue = layoutIcon.getText().toString();
+ int layoutDropdownValue = (int)layoutDropdown.getSelectedItem();
if(!layoutNameValue.equals(""))
{
- if(!layoutIconValue.equals(""))
+ if(!layoutIconValue.equals("")) {
layoutsEditor.putString(layoutNameValue, layoutIconValue);
- else
+ iconsEditor.putInt(layoutNameValue, layoutDropdownValue);
+ } else {
layoutsEditor.putString(layoutNameValue, "??");
+ iconsEditor.putInt(layoutNameValue, layoutDropdownValue);
+ }
}
}
+ shouldRefresh = false;
+ iconsEditor.apply();
+ shouldRefresh = true;
layoutsEditor.apply();
+ } else {
+ populateLayouts();
}
}
@@ -264,8 +309,11 @@ implements View.OnClickListener, DialogInterface.OnClickListener, SharedPreferen
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
- layouts = getSharedPreferences("layouts", 0);
- updateLayouts();
+ if (shouldRefresh) {
+ layouts = getSharedPreferences("layouts", 0);
+ iconsPrefs = getSharedPreferences("icons", 0);
+ updateLayouts();
+ }
}
private boolean isPackageInstalled(String packageName, PackageManager packageManager)
diff --git a/app/src/main/res/drawable/ic_flag_belarus.xml b/app/src/main/res/drawable/ic_flag_belarus.xml
new file mode 100644
index 0000000..68f1e9b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_flag_belarus.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_flag_gb.xml b/app/src/main/res/drawable/ic_flag_gb.xml
new file mode 100644
index 0000000..2e689ed
--- /dev/null
+++ b/app/src/main/res/drawable/ic_flag_gb.xml
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_flag_russia.xml b/app/src/main/res/drawable/ic_flag_russia.xml
new file mode 100644
index 0000000..553ee43
--- /dev/null
+++ b/app/src/main/res/drawable/ic_flag_russia.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_flag_ukr.xml b/app/src/main/res/drawable/ic_flag_ukr.xml
new file mode 100644
index 0000000..18c14c9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_flag_ukr.xml
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_language_default.xml b/app/src/main/res/drawable/ic_language_default.xml
new file mode 100644
index 0000000..d07324c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_language_default.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/spinner_item.xml b/app/src/main/res/layout/spinner_item.xml
new file mode 100644
index 0000000..d961042
--- /dev/null
+++ b/app/src/main/res/layout/spinner_item.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml
index 48e5c43..7dcc392 100644
--- a/app/src/main/res/values-be/strings.xml
+++ b/app/src/main/res/values-be/strings.xml
@@ -37,12 +37,14 @@
- Тэкст у крузе
- Тэкст у квадраце
- Тэкст у квадраце з абрысам
+ - Іконка
- 0
- 1
- 2
- 3
+ - 4
Рэдактар іконак
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 358cac6..9ad7b3d 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -42,12 +42,14 @@
- Text v kruhu
- Text ve čtverci
- Text v obrysu čtverce
+ - Ikona
- 0
- 1
- 2
- 3
+ - 4
Vytváření ikony
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index c21d6ec..5f467b7 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -37,12 +37,14 @@
- Текст в круге
- Текст в квадрате
- Текст в квадрате с обводкой
+ - Иконка
- 0
- 1
- 2
- 3
+ - 4
Редактор иконок
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c5da3c2..63c3356 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -43,12 +43,14 @@
- Text in circle
- Text in a square
- Text in a square outline
+ - Icon
- 0
- 1
- 2
- 3
+ - 4
Icon builder