Skip to content

Commit 2e1f678

Browse files
committed
added experimental transform
1 parent 53adc0c commit 2e1f678

File tree

8 files changed

+87
-5
lines changed

8 files changed

+87
-5
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
defaultConfig {
99
// =====
1010
var isDev = true
11-
var verBuild = 70
12-
var verName = "0.9.8.1"
11+
var verBuild = 71
12+
var verName = "0.9.8._2"
1313
// =====
1414

1515
applicationId "ru.fazziclay.opentoday" + (isDev ? ".dev" : "")

app/src/main/java/com/fazziclay/opentoday/app/App.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ public static App get() {
8888
FeatureFlag.SHOW_APP_STARTUP_TIME_IN_PREMAIN_ACTIVITY,
8989
FeatureFlag.ALWAYS_SHOW_SAVE_STATUS,
9090
FeatureFlag.SHOW_MAINACTIVITY_STARTUP_TIME,
91-
FeatureFlag.AVAILABLE_UI_PERSONAL_TICK
91+
FeatureFlag.AVAILABLE_UI_PERSONAL_TICK,
92+
FeatureFlag.EXPERIMENTAL_TRANSFORM
9293
) : Collections.emptyList());
9394
private long appStartupTime = 0;
9495

app/src/main/java/com/fazziclay/opentoday/app/FeatureFlag.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ public enum FeatureFlag {
99
SHOW_MAINACTIVITY_STARTUP_TIME("MainActivity: startup time show in Toast"),
1010
ALWAYS_SHOW_SAVE_STATUS("ItemManager: always show save status in toast"),
1111
AVAILABLE_UI_PERSONAL_TICK("Toolbar -> OpenToday debug button"),
12-
DISABLE_AUTOMATIC_TICK("DISABLE ALL AUTOMATIC TICK IN ItemManager caps :)");
12+
DISABLE_AUTOMATIC_TICK("DISABLE ALL AUTOMATIC TICK IN ItemManager caps :)"),
13+
EXPERIMENTAL_TRANSFORM("Enable experimental transform items");
1314

1415
private final String description;
1516

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.fazziclay.opentoday.app.items.item;
2+
3+
public class ExperimentalTransform {
4+
public static Transform transform(Item item, Class<? extends Item> to) {
5+
Class<? extends Item> from = item.getClass();
6+
7+
8+
if (to == DayRepeatableCheckboxItem.class) {
9+
if (from == CheckboxItem.class) {
10+
CheckboxItem checkboxItem = (CheckboxItem) item;
11+
return new Transform(true, new DayRepeatableCheckboxItem(checkboxItem, false, 0));
12+
13+
} else if (from == TextItem.class) {
14+
TextItem textItem = (TextItem) item;
15+
return new Transform(true, new DayRepeatableCheckboxItem(new CheckboxItem(textItem, false), false, 0));
16+
}
17+
}
18+
19+
if (to == CheckboxItem.class) {
20+
if (from == TextItem.class) {
21+
TextItem textItem = (TextItem) item;
22+
return new Transform(true, new CheckboxItem(textItem, false));
23+
}
24+
}
25+
26+
if (to == LongTextItem.class) {
27+
if (from == TextItem.class) {
28+
TextItem textItem = (TextItem) item;
29+
return new Transform(true, new LongTextItem(textItem, ""));
30+
}
31+
}
32+
33+
return new Transform(false, null);
34+
}
35+
36+
public static class Transform {
37+
private final boolean allow;
38+
private final Item result;
39+
40+
public Transform(boolean allow, Item result) {
41+
this.allow = allow;
42+
this.result = result;
43+
}
44+
45+
public boolean isAllow() {
46+
return allow;
47+
}
48+
49+
public Item getResult() {
50+
return result;
51+
}
52+
}
53+
}

app/src/main/java/com/fazziclay/opentoday/ui/item/ItemStorageDrawer.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,19 @@
1616

1717
import com.fazziclay.opentoday.R;
1818
import com.fazziclay.opentoday.app.App;
19+
import com.fazziclay.opentoday.app.FeatureFlag;
1920
import com.fazziclay.opentoday.app.items.ItemManager;
2021
import com.fazziclay.opentoday.app.items.ItemsStorage;
2122
import com.fazziclay.opentoday.app.items.Selection;
2223
import com.fazziclay.opentoday.app.items.callback.OnItemsStorageUpdate;
2324
import com.fazziclay.opentoday.app.items.callback.OnSelectionChanged;
25+
import com.fazziclay.opentoday.app.items.item.ExperimentalTransform;
2426
import com.fazziclay.opentoday.app.items.item.Item;
2527
import com.fazziclay.opentoday.app.items.item.TextItem;
2628
import com.fazziclay.opentoday.app.settings.SettingsManager;
2729
import com.fazziclay.opentoday.callback.CallbackImportance;
2830
import com.fazziclay.opentoday.callback.Status;
31+
import com.fazziclay.opentoday.ui.dialog.DialogSelectItemType;
2932
import com.fazziclay.opentoday.ui.dialog.DialogTextItemEditText;
3033
import com.fazziclay.opentoday.ui.interfaces.ItemInterface;
3134
import com.fazziclay.opentoday.ui.interfaces.StorageEditsActions;
@@ -331,7 +334,8 @@ private void actionItem(Item item, SettingsManager.ItemAction action) {
331334
}
332335

333336
private void showRightMenu(Item item, View itemView) {
334-
ItemManager itemManager = App.get(activity).getItemManager();
337+
App app = App.get(activity);
338+
ItemManager itemManager = app.getItemManager();
335339
PopupMenu menu = new PopupMenu(activity, itemView);
336340
menu.setForceShowIcon(true);
337341
menu.inflate(R.menu.menu_item);
@@ -342,6 +346,7 @@ private void showRightMenu(Item item, View itemView) {
342346
TextItem textItem = (TextItem) item;
343347
menu.getMenu().findItem(R.id.textItem_clickableUrls).setChecked(textItem.isClickableUrls());
344348
}
349+
menu.getMenu().findItem(R.id.transform).setVisible(app.isFeatureFlag(FeatureFlag.EXPERIMENTAL_TRANSFORM));
345350
menu.setOnMenuItemClickListener(menuItem -> {
346351
boolean save = false;
347352
SettingsManager.ItemAction itemAction = null;
@@ -391,6 +396,19 @@ private void showRightMenu(Item item, View itemView) {
391396
d.show();
392397
}
393398
break;
399+
400+
case R.id.transform:
401+
new DialogSelectItemType(activity, type -> {
402+
ExperimentalTransform.Transform transform = ExperimentalTransform.transform(item, type);
403+
if (transform.isAllow()) {
404+
int pos = itemsStorage.getItemPosition(item);
405+
itemsStorage.addItem(transform.getResult(), pos + 1);
406+
407+
} else {
408+
Toast.makeText(activity, R.string.transform_not_allowed, Toast.LENGTH_SHORT).show();
409+
}
410+
}).show();
411+
break;
394412
}
395413

396414
if (itemAction != null) actionItem(item, itemAction);

app/src/main/res/menu/menu_item.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
android:id="@+id/copy"
2424
android:title="@string/menuItem_copy" />
2525

26+
<item
27+
android:id="@+id/transform"
28+
android:visible="false"
29+
android:title="@string/menuItem_transform" />
30+
2631
<item
2732
android:visible="false"
2833
android:id="@+id/delete"

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,4 +208,6 @@
208208
<string name="fragment_itemEditor_longtext_textSize">Размер большого текста</string>
209209
<string name="toolbar_more_selection_editSelected">Редактировать выбранный</string>
210210
<string name="toolbar_more_opentoday_debug_personalTick">Отладка: VIP Tick :)</string>
211+
<string name="menuItem_transform">Трансформация</string>
212+
<string name="transform_not_allowed">Трансформация не разрешена</string>
211213
</resources>

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,6 @@
213213
<string name="fragment_itemEditor_longtext_textSize">Text size</string>
214214
<string name="toolbar_more_selection_editSelected">Edit selected</string>
215215
<string name="toolbar_more_opentoday_debug_personalTick">DEBUG: Personal tick</string>
216+
<string name="menuItem_transform">Transform</string>
217+
<string name="transform_not_allowed">Transform not allowed</string>
216218
</resources>

0 commit comments

Comments
 (0)