Skip to content

Commit 926d42c

Browse files
authored
Merge pull request #2 from geckour/develop
v1.0.0
2 parents ce1bbcc + b5c875f commit 926d42c

File tree

8 files changed

+166
-178
lines changed

8 files changed

+166
-178
lines changed

app/proguard-rules.pro

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,16 @@
1515
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
1616
# public *;
1717
#}
18+
19+
# okio
20+
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
21+
22+
23+
# Gson
24+
-keep class com.google.gson.examples.android.model.** { *; }
25+
26+
-keep class * implements com.google.gson.TypeAdapterFactory
27+
-keep class * implements com.google.gson.JsonSerializer
28+
-keep class * implements com.google.gson.JsonDeserializer
29+
30+
-keepnames enum com.geckour.lopicmaker.data.model.** { *; }

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,16 @@
1212
android:roundIcon="@mipmap/ic_launcher_round"
1313
android:supportsRtl="true"
1414
android:theme="@style/AppTheme">
15+
1516
<activity
16-
android:name="com.geckour.lopicmaker.ui.main.MainActivity"
17+
android:name=".ui.main.MainActivity"
1718
android:label="@string/app_name"
1819
android:theme="@style/AppTheme.NoActionBar">
20+
21+
<meta-data
22+
android:name="google_analytics_adid_collection_enabled"
23+
android:value="false" />
24+
1925
<intent-filter>
2026
<action android:name="android.intent.action.MAIN" />
2127
<action android:name="android.intent.action.VIEW" />
@@ -24,5 +30,4 @@
2430
</intent-filter>
2531
</activity>
2632
</application>
27-
2833
</manifest>

app/src/main/java/com/geckour/lopicmaker/data/dao/ProblemDao.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ interface ProblemDao {
2424

2525
suspend fun Problem.upsert(db: DB): Long =
2626
db.problemDao().get(id)?.let {
27-
db.problemDao().update(it.copy(id = it.id))
28-
it.id
27+
val result = db.problemDao().update(this.copy(id = it.id))
28+
if (result > 0) it.id else -1
2929
} ?: db.problemDao().insert(this)

app/src/main/java/com/geckour/lopicmaker/ui/main/edit/EditorFragment.kt

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,13 @@ import android.util.Size
99
import android.view.*
1010
import androidx.fragment.app.Fragment
1111
import androidx.lifecycle.ViewModelProviders
12-
import com.geckour.lopicmaker.App
1312
import com.geckour.lopicmaker.R
1413
import com.geckour.lopicmaker.databinding.FragmentEditorBinding
1514
import com.geckour.lopicmaker.ui.main.MainViewModel
1615
import com.geckour.lopicmaker.util.Algorithm
1716
import com.geckour.lopicmaker.util.MyAlertDialogFragment
1817
import com.geckour.lopicmaker.util.observe
1918
import timber.log.Timber
20-
import java.sql.Timestamp
2119

2220
class EditorFragment : Fragment(), MyAlertDialogFragment.DialogListener {
2321

@@ -232,24 +230,7 @@ class EditorFragment : Fragment(), MyAlertDialogFragment.DialogListener {
232230
MyAlertDialogFragment.RequestCode.CONFIRM_BEFORE_SAVE -> {
233231
(result as? String)?.apply {
234232
if (this.isNotEmpty()) {
235-
val metadata: MyAlertDialogFragment.ProblemMetadata? =
236-
try {
237-
App.gson.fromJson(this, MyAlertDialogFragment.ProblemMetadata::class.java)
238-
} catch (e: Exception) {
239-
Timber.e(e)
240-
null
241-
}
242-
viewModel.problem.value?.also { problem ->
243-
problem.draft =
244-
viewModel.satisfactionState.value !=
245-
Algorithm.SatisfactionState.Satisfiable
246-
problem.editedAt = Timestamp(System.currentTimeMillis())
247-
metadata?.let {
248-
problem.title = it.title
249-
problem.tags = it.tags
250-
}
251-
viewModel.overwriteProblem(requireContext(), problem)
252-
}
233+
viewModel.overwriteProblem(requireContext(), this)
253234
}
254235
} ?: viewModel.snackbarStringResId.postValue(R.string.editor_fragment_error_invalid_title)
255236
}

app/src/main/java/com/geckour/lopicmaker/ui/main/edit/EditorViewModel.kt

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.geckour.lopicmaker.util.SingleLiveEvent
2020
import com.geckour.lopicmaker.util.fromJson
2121
import kotlinx.coroutines.launch
2222
import timber.log.Timber
23+
import java.sql.Timestamp
2324
import java.util.concurrent.TimeoutException
2425

2526
class EditorViewModel : ViewModel() {
@@ -87,15 +88,37 @@ class EditorViewModel : ViewModel() {
8788
}
8889
}
8990

90-
internal fun overwriteProblem(context: Context, problem: Problem) {
91-
try {
92-
viewModelScope.launch {
93-
problem.upsert(DB.getInstance(context))
94-
snackbarStringResId.postValue(R.string.editor_fragment_message_complete_save)
91+
internal fun overwriteProblem(context: Context, data: String) {
92+
problem.value?.apply {
93+
try {
94+
viewModelScope.launch {
95+
val metadata: MyAlertDialogFragment.ProblemMetadata? =
96+
try {
97+
App.gson.fromJson(data)
98+
} catch (e: Exception) {
99+
Timber.e(e)
100+
null
101+
}
102+
this@apply.draft =
103+
satisfactionState.value !=
104+
Algorithm.SatisfactionState.Satisfiable
105+
this@apply.editedAt = Timestamp(System.currentTimeMillis())
106+
this@apply.thumb = nonNullAlgorithm.getThumbnailImage()
107+
metadata?.let {
108+
this@apply.title = it.title
109+
this@apply.tags = it.tags
110+
}
111+
problem.postValue(this@apply)
112+
val result = this@apply.upsert(DB.getInstance(context))
113+
snackbarStringResId.postValue(
114+
if (result > -1) R.string.editor_fragment_message_complete_save
115+
else R.string.editor_fragment_error_failure_save
116+
)
117+
}
118+
} catch (t: Throwable) {
119+
Timber.e(t)
120+
snackbarStringResId.postValue(R.string.editor_fragment_error_failure_save)
95121
}
96-
} catch (t: Throwable) {
97-
Timber.e(t)
98-
snackbarStringResId.postValue(R.string.editor_fragment_error_failure_save)
99122
}
100123
}
101124

app/src/main/res/layout/toolbar_search.xml

Lines changed: 0 additions & 82 deletions
This file was deleted.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
<string name="action_bar_title_main">作成済みの問題</string>
4+
<string name="action_bar_title_draft">下書き</string>
5+
<string name="action_bar_title_edit">編集</string>
6+
<string name="action_bar_title_edit_with_title">編集 - %1$s</string>
7+
<string name="action_bar_title_solve">求解</string>
8+
<string name="action_bar_title_solve_with_title">求解 - %1$s</string>
9+
10+
<string name="navigation_drawer_open">ドロワーを開く</string>
11+
<string name="navigation_drawer_close">ドロワーを閉じる</string>
12+
13+
<string name="action_settings">設定</string>
14+
<string name="action_save">保存</string>
15+
<string name="action_undo">取り消し</string>
16+
17+
<string name="nav_main">編集</string>
18+
<string name="nav_problem">作成済みの問題</string>
19+
<string name="nav_draft">下書き</string>
20+
<string name="nav_editor">新規作成</string>
21+
22+
<string name="hint_query_title">タイトルを入力…</string>
23+
<string name="hint_query_genre">タグを入力…</string>
24+
25+
<string name="dialog_alert_width_size_define">横:</string>
26+
<string name="dialog_alert_height_size_define">縦:</string>
27+
<string name="dialog_alert_hint_size_define">1 ~ 128</string>
28+
<string name="dialog_alert_title_title_define">タイトル:</string>
29+
<string name="dialog_alert_title_tags_define">タグ:</string>
30+
<string name="dialog_alert_button_confirm">決定</string>
31+
<string name="dialog_alert_button_cancel">キャンセル</string>
32+
<string name="dialog_alert_button_overwrite">上書き</string>
33+
<string name="dialog_alert_button_create_new">新規問題として保存</string>
34+
<string name="dialog_alert_title_size_define">キャンバスのサイズ</string>
35+
<string name="dialog_alert_title_save_problem">保存</string>
36+
<string name="dialog_alert_title_save_draft_problem">下書きを保存</string>
37+
<string name="dialog_alert_title_overwrite">上書き保存</string>
38+
<string name="dialog_alert_message_save_problem">問題を保存しますか?</string>
39+
<string name="dialog_alert_message_save_draft_problem_exist_multiple_solution">
40+
この問題のヒントキーからは複数の解が導かれます。下書きとして保存しますか?
41+
</string>
42+
<string name="dialog_alert_message_save_draft_problem_unsatisfiable">この問題は解くことができません。下書きとして保存しますか?</string>
43+
<string name="dialog_alert_message_confirm_before_save">上書き保存しますか?\n新しい問題 / 下書きとして保存しますか?</string>
44+
45+
<string name="problem_fragment_message_empty">まだ問題が作成されていません。\n右下の+ボタンから作成してください</string>
46+
<string name="problem_fragment_message_empty_draft">まだ下書きが作成されていません。\n右下の+ボタンから作成してください</string>
47+
<string name="problem_fragment_error_invalid_size">有効なサイズを指定してください</string>
48+
<string name="problem_fragment_item_point">%1$d x %2$d</string>
49+
<string name="problem_fragment_error_failure_delete">削除に失敗しました</string>
50+
<string name="problem_fragment_message_complete_delete">削除しました</string>
51+
<string name="problem_fragment_message_undo">取り消しました</string>
52+
<string name="problem_fragment_text_tag_prefix">タグ: %1$s</string>
53+
54+
<string name="editor_fragment_message_complete_save">保存しました</string>
55+
<string name="editor_fragment_error_failure_save">保存に失敗しました</string>
56+
<string name="editor_fragment_error_invalid_title">有効なタイトルを指定してください</string>
57+
58+
<string name="solve_fragment_message_solved">求解成功</string>
59+
60+
<string name="popup_item_title_solve">この問題を解く</string>
61+
<string name="popup_item_title_edit">この問題を編集</string>
62+
<string name="popup_item_title_delete">この問題を削除</string>
63+
64+
<string name="accessibility_desc_drawer_open">ドロワーを開く</string>
65+
<string name="accessibility_desc_drawer_close">ドロワーを閉じる</string>
66+
</resources>

0 commit comments

Comments
 (0)