Added folder select to count widget

This commit is contained in:
M66B
2023-11-05 10:17:59 +01:00
parent b2f7e97b8c
commit b277eda261
7 changed files with 139 additions and 16 deletions

View File

@@ -29,6 +29,7 @@ import android.os.Build;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
@@ -39,6 +40,8 @@ import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.Group;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.ColorUtils;
@@ -49,12 +52,14 @@ import com.flask.colorpicker.builder.ColorPickerClickListener;
import com.flask.colorpicker.builder.ColorPickerDialogBuilder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ActivityWidget extends ActivityBase {
private int appWidgetId;
private Spinner spAccount;
private Spinner spFolder;
private CheckBox cbDayNight;
private CheckBox cbSemiTransparent;
private ViewButtonColor btnBgColor;
@@ -70,6 +75,7 @@ public class ActivityWidget extends ActivityBase {
private Group grpReady;
private ArrayAdapter<EntityAccount> adapterAccount;
private ArrayAdapter<EntityFolder> adapterFolder;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -86,6 +92,7 @@ public class ActivityWidget extends ActivityBase {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
long account = prefs.getLong("widget." + appWidgetId + ".account", -1L);
long folder = prefs.getLong("widget." + appWidgetId + ".folder", -1L);
boolean daynight = prefs.getBoolean("widget." + appWidgetId + ".daynight", false);
boolean semi = prefs.getBoolean("widget." + appWidgetId + ".semi", true);
int background = prefs.getInt("widget." + appWidgetId + ".background", Color.TRANSPARENT);
@@ -101,6 +108,7 @@ public class ActivityWidget extends ActivityBase {
setContentView(R.layout.activity_widget);
spAccount = findViewById(R.id.spAccount);
spFolder = findViewById(R.id.spFolder);
cbDayNight = findViewById(R.id.cbDayNight);
cbSemiTransparent = findViewById(R.id.cbSemiTransparent);
btnBgColor = findViewById(R.id.btnBgColor);
@@ -256,14 +264,19 @@ public class ActivityWidget extends ActivityBase {
@Override
public void onClick(View view) {
EntityAccount account = (EntityAccount) spAccount.getSelectedItem();
EntityFolder folder = (EntityFolder) spFolder.getSelectedItem();
int pos = spFontSize.getSelectedItemPosition();
SharedPreferences.Editor editor = prefs.edit();
if (account != null && account.id > 0)
editor.putString("widget." + appWidgetId + ".name", account.name);
else
editor.remove("widget." + appWidgetId + ".name");
if (folder == null) {
if (account != null && account.id > 0)
editor.putString("widget." + appWidgetId + ".name", account.name);
else
editor.remove("widget." + appWidgetId + ".name");
} else
editor.putString("widget." + appWidgetId + ".name", folder.getDisplayName(ActivityWidget.this));
editor.putLong("widget." + appWidgetId + ".account", account == null ? -1L : account.id);
editor.putLong("widget." + appWidgetId + ".folder", folder == null ? -1L : folder.id);
editor.putBoolean("widget." + appWidgetId + ".daynight", cbDayNight.isChecked());
editor.putBoolean("widget." + appWidgetId + ".semi", cbSemiTransparent.isChecked());
editor.putInt("widget." + appWidgetId + ".background", btnBgColor.getColor());
@@ -288,6 +301,89 @@ public class ActivityWidget extends ActivityBase {
adapterAccount.setDropDownViewResource(R.layout.spinner_item1_dropdown);
spAccount.setAdapter(adapterAccount);
adapterFolder = new ArrayAdapter<EntityFolder>(this, R.layout.spinner_item1, android.R.id.text1, new ArrayList<EntityFolder>()) {
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
return localize(position, super.getView(position, convertView, parent));
}
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
return localize(position, super.getDropDownView(position, convertView, parent));
}
private View localize(int position, View view) {
EntityFolder folder = getItem(position);
if (folder != null) {
TextView tv = view.findViewById(android.R.id.text1);
tv.setText(EntityFolder.localizeName(view.getContext(), folder.name));
}
return view;
}
};
adapterFolder.setDropDownViewResource(R.layout.spinner_item1_dropdown);
spFolder.setAdapter(adapterFolder);
spAccount.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
EntityAccount account = (EntityAccount) spAccount.getAdapter().getItem(position);
setFolders(account.id);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
setFolders(-1);
}
private void setFolders(long account) {
Bundle args = new Bundle();
args.putLong("account", account);
new SimpleTask<List<EntityFolder>>() {
@Override
protected List<EntityFolder> onExecute(Context context, Bundle args) {
long account = args.getLong("account");
DB db = DB.getInstance(context);
List<EntityFolder> folders = db.folder().getNotifyingFolders(account);
if (folders != null && folders.size() > 0)
Collections.sort(folders, folders.get(0).getComparator(context));
return folders;
}
@Override
protected void onExecuted(Bundle args, List<EntityFolder> folders) {
if (folders == null)
folders = new ArrayList<>();
EntityFolder notifying = new EntityFolder();
notifying.id = -1L;
notifying.name = getString(R.string.title_widget_folder_notifying);
folders.add(0, notifying);
adapterFolder.clear();
adapterFolder.addAll(folders);
int select = 0;
for (int i = 0; i < folders.size(); i++)
if (folders.get(i).id.equals(folder)) {
select = i;
break;
}
spFolder.setSelection(select);
}
@Override
protected void onException(Bundle args, Throwable ex) {
Log.unexpectedError(getSupportFragmentManager(), ex);
}
}.execute(ActivityWidget.this, args, "widget:folders");
}
});
// Initialize
((TextView) inOld.findViewById(R.id.tvCount)).setText("3");
((TextView) inNew.findViewById(R.id.tvCount)).setText("3");