M app/src/main/AndroidManifest.xml => app/src/main/AndroidManifest.xml +2 -4
@@ 52,10 52,8 @@
</intent-filter>
</activity>
<activity
- android:name=".account.AccountAuthenticator$AccountAddDialog"
- android:excludeFromRecents="true">
-
- </activity>
+ android:name=".ui.AccountAddDialog"
+ android:excludeFromRecents="true" />
<activity android:name=".ui.AnnotationDialog">
</activity>
<activity android:name=".ui.EditorActivity">
M app/src/main/java/kvj/taskw/account/AccountAuthenticator.java => app/src/main/java/kvj/taskw/account/AccountAuthenticator.java +1 -83
@@ 10,23 10,10 @@ import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.support.annotation.Nullable;
-import android.view.View;
-import android.widget.ArrayAdapter;
-import android.widget.Spinner;
-
-import org.kvj.bravo7.form.FormController;
-import org.kvj.bravo7.form.impl.ViewFinder;
-import org.kvj.bravo7.form.impl.widget.SpinnerIntegerAdapter;
-import org.kvj.bravo7.form.impl.widget.TextViewCharSequenceAdapter;
import timber.log.Timber;
-import java.util.List;
-
-import kvj.taskw.App;
-import kvj.taskw.R;
-import kvj.taskw.data.Controller;
-import kvj.taskw.ui.AppDialog;
+import kvj.taskw.ui.AccountAddDialog;
/**
* Created by vorobyev on 11/17/15.
@@ 98,73 85,4 @@ public class AccountAuthenticator extends AbstractAccountAuthenticator {
Timber.d("hasFeatures %s %s", account, response);
return null;
}
-
- public static class AccountAddDialog extends AppDialog {
-
- Controller controller = App.controller();
- private View okButton;
- private AccountAuthenticatorResponse mAccountAuthenticatorResponse;
- private Bundle mResultBundle = null;
- private FormController form = new FormController(new ViewFinder.ActivityViewFinder(this));
- private List<String> folders = null;
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mAccountAuthenticatorResponse =
- getIntent().getParcelableExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE);
-
- if (mAccountAuthenticatorResponse != null) {
- mAccountAuthenticatorResponse.onRequestContinued();
- }
- setContentView(R.layout.dialog_add_account);
- form.add(new TextViewCharSequenceAdapter(R.id.add_account_input, ""), "input");
- form.add(new SpinnerIntegerAdapter(R.id.add_account_folder, 0), "folder");
- folders = controller.accountFolders();
- folders.add(0, "<<Create new>>");
- ArrayAdapter<String>
- adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, folders);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- form.getView("folder", Spinner.class).setAdapter(adapter);
- okButton = findViewById(R.id.add_account_ok_btn);
- okButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String name = form.getValue("input");
- int folderIndex = form.getValue("folder");
- String err = controller.createAccount(name, folderIndex > 0? folders.get(folderIndex): null);
- if (err == null) {
- mResultBundle = new Bundle();
- mResultBundle.putString(AccountManager.KEY_ACCOUNT_NAME, name);
- mResultBundle
- .putString(AccountManager.KEY_ACCOUNT_TYPE, App.ACCOUNT_TYPE);
- finish();
- } else {
- controller.messageLong(err);
- }
- }
- });
- findViewById(R.id.add_account_cancel_btn).setOnClickListener(
- new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
- }
-
- public void finish() {
- if (mAccountAuthenticatorResponse != null) {
- // send the result bundle back if set, otherwise send an error.
- if (mResultBundle != null) {
- mAccountAuthenticatorResponse.onResult(mResultBundle);
- } else {
- mAccountAuthenticatorResponse.onError(AccountManager.ERROR_CODE_CANCELED, "canceled");
- }
- mAccountAuthenticatorResponse = null;
- }
- super.finish();
- }
- }
-
}
A app/src/main/java/kvj/taskw/ui/AccountAddDialog.kt => app/src/main/java/kvj/taskw/ui/AccountAddDialog.kt +69 -0
@@ 0,0 1,69 @@
+package kvj.taskw.ui
+
+import android.accounts.AccountAuthenticatorResponse
+import android.accounts.AccountManager
+import android.os.Bundle
+import android.widget.ArrayAdapter
+
+import kvj.taskw.App
+import kvj.taskw.R
+import kvj.taskw.data.Controller
+
+import kotlinx.android.synthetic.main.dialog_add_account.*
+
+class AccountAddDialog : AppDialog() {
+ private var controller = App.controller<Controller>()
+ private var response: AccountAuthenticatorResponse? = null
+ private var result = Bundle()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.dialog_add_account)
+
+ response = intent.getParcelableExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE)
+ response?.apply { onRequestContinued() }
+
+ val folders = controller.accountFolders()
+ folders.add(0, getString(R.string.data_new_folder))
+
+ val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, folders).apply {
+ setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
+ }
+ account_folder_select.adapter = adapter
+
+ ok_button.setOnClickListener {
+ val name = account_name_input.text.toString()
+ val folderIndex = account_folder_select.selectedItemPosition
+ val err = controller.createAccount(name, if (folderIndex > 0) folders[folderIndex] else null)
+
+ err?.let {
+ controller.messageLong(err)
+ return@setOnClickListener
+ }
+
+ result.apply {
+ putString(AccountManager.KEY_ACCOUNT_NAME, name)
+ putString(AccountManager.KEY_ACCOUNT_TYPE, App.ACCOUNT_TYPE)
+ }
+
+ finish()
+ }
+
+ cancel_button.setOnClickListener { finish() }
+ }
+
+ override fun finish() {
+ response?.let {
+ // send the result bundle back if set, otherwise send an error.
+ if (result.isEmpty) {
+ response!!.onResult(result)
+ } else {
+ response!!.onError(AccountManager.ERROR_CODE_CANCELED, "canceled")
+ }
+
+ response = null
+ }
+
+ super.finish()
+ }
+}
M app/src/main/res/layout/dialog_add_account.xml => app/src/main/res/layout/dialog_add_account.xml +4 -4
@@ 13,7 13,7 @@
android:layout_height="wrap_content">
<EditText
- android:id="@+id/add_account_input"
+ android:id="@+id/account_name_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autofillHints="name"
@@ 30,7 30,7 @@
android:textColor="@color/colorAccent" />
<Spinner
- android:id="@+id/add_account_folder"
+ android:id="@+id/account_folder_select"
style="@style/Base.Widget.AppCompat.Spinner.Underlined"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
@@ 42,7 42,7 @@
android:orientation="horizontal">
<Button
- android:id="@+id/add_account_cancel_btn"
+ android:id="@+id/cancel_button"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ 50,7 50,7 @@
android:text="@android:string/cancel" />
<Button
- android:id="@+id/add_account_ok_btn"
+ android:id="@+id/ok_button"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
M app/src/main/res/values/strings.xml => app/src/main/res/values/strings.xml +1 -0
@@ 98,6 98,7 @@
<!-- New account dialog -->
<string name="account_name_hint">Name</string>
<string name="data_folder">Folder</string>
+ <string name="data_new_folder">Create new</string>
<!-- Annotation dialog -->
<string name="annotation">Annotation</string>