import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
-import android.widget.Toast;
-import com.yuji.ef.common.CommonUtil;
+import com.evernote.client.oauth.android.EvernoteSession;
import com.yuji.ef.common.Constant;
import com.yuji.ef.dao.LockDao;
import com.yuji.ef.dao.Node;
import com.yuji.ef.dao.NodeCacheDao;
import com.yuji.ef.dao.NodeDao;
+import com.yuji.ef.exception.EfException;
import com.yuji.ef.pref.EditPrefUtil;
import com.yuji.ef.service.NoteUpdatorService;
import com.yuji.ef.task.NoteUpdateTask;
import com.yuji.ef.utility.BaseActivity;
import com.yuji.ef.utility.Debug;
import com.yuji.ef.utility.EvernoteUtil;
+import com.yuji.ef.utility.LockHandler;
+import com.yuji.ef.utility.LockListener;
+import com.yuji.ef.utility.OAuthUtil;
-public class SettingActivity extends BaseActivity {
+public class SettingActivity extends BaseActivity implements LockListener {
private EditPrefUtil pref = new EditPrefUtil(this);
private LinearLayout msgLayout;
private TextView confirmMsg;
private Button loginButton;
+ private Button logoutButton;
private Button listButton;
private Button bookButton;
private Button updateButton;
private Spinner updateSpinner;
+ private LinearLayout updateDateLayout;
+ private TextView updateDateText;
private Button closeButton;
private boolean isRegister = false;
private boolean lock = false;
private boolean isInit = true;
+ private boolean isInCycle = false;
+ private LockHandler lockHandler = null;
+
+ private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+
+ if (action.equals(Constant.ACTION_MESSAGE)) {
+ String msg = intent
+ .getStringExtra(Constant.ACTION_MESSAGE_MESSAGE);
+ EfException.msg(SettingActivity.this, msg);
+ } else if (action.equals(Constant.ACTION_UPDATE)) {
+ if (isInCycle && !lock) {
+ LockDao lockDao = (LockDao) LockDao.getInstance();
+ lock = lockDao.lock(SettingActivity.this,
+ Constant.LOCK_UPDATE_NOTE);
+ setStatus();
+ }
+ }
+ }
+ };
private class NoteUpdatorReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
- Toast toast = Toast.makeText(getApplicationContext(), "Time over!",
- Toast.LENGTH_LONG);
- toast.show();
+ ;
}
}
super.onCreate(savedInstanceState);
setContentView(R.layout.setting);
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(Constant.ACTION_UPDATE);
+ intentFilter.addAction(Constant.ACTION_MESSAGE);
+ registerReceiver(broadcastReceiver, intentFilter);
+
msgLayout = (LinearLayout) findViewById(R.id.settingMsgLayout);
confirmMsg = (TextView) findViewById(R.id.settingConfirmMsg);
loginButton = (Button) findViewById(R.id.settingLoginButton);
+ logoutButton = (Button) findViewById(R.id.settingLogoutButton);
listButton = (Button) findViewById(R.id.settingListButton);
bookButton = (Button) findViewById(R.id.settingBookButton);
updateButton = (Button) findViewById(R.id.settingUpdateButton);
updateSpinner = (Spinner) findViewById(R.id.settingUpdateSpinner);
+ updateDateLayout = (LinearLayout) findViewById(R.id.settingUpdateDateLayout);
+ updateDateText = (TextView) findViewById(R.id.settingUpdateDateText);
closeButton = (Button) findViewById(R.id.settingCloseButton);
loginButton.setOnClickListener(new OnClickListener() {
loginButtonOnClick();
}
});
+ logoutButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ logoutButtonOnClick();
+ }
+ });
listButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
noteOrderAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
updateSpinner.setAdapter(noteOrderAdapter);
+
+ OAuthUtil authUtil = OAuthUtil.getInstance();
+ EvernoteSession session = authUtil.setupSession(this);
+ EvernoteUtil.getInstance().setSession(session);
+ }
+
+ @Override
+ public void sendLockResult(boolean b) {
+ lock = true;
+
+ if (isInit) {
+ isInit = false;
+ }
+ setStatus();
}
@Override
@Override
protected void onResume() {
super.onResume();
+ isInCycle = true;
+
+ lockHandler = new LockHandler();
+ boolean isUnlock = false;
+ lockHandler.lock(this, Constant.LOCK_UPDATE_NOTE, true, isUnlock);
+ lock = false;
int updateTime = pref.getInt(Constant.PREF_UPDATE_TIME, 0);
break;
}
}
-
- if (isInit) {
- setStatus();
- isInit = false;
- }
+ setStatus();
}
@Override
}
}
+ // ロック未取得でも解除する(ゴミ掃除)
+ LockDao lockDao = (LockDao) LockDao.getInstance();
+ lockDao.unlock(this, Constant.LOCK_UPDATE_NOTE);
+ lock = false;
+
+ if (lockHandler != null){
+ lockHandler.cancel();
+ lockHandler = null;
+ }
+
super.onPause();
+ isInCycle = false;
}
@Override
Intent intent = new Intent(this, (Class<?>) OAuthActivity.class);
startActivityForResult(intent, 0);
}
+
+ private void logoutButtonOnClick(){
+ try {
+ OAuthUtil util = OAuthUtil.getInstance();
+ util.logout(this);
+ EvernoteSession session = util.setupSession(this);
+ EvernoteUtil.getInstance().setSession(session);
+
+ setStatus();
+ }
+ catch (Exception e){
+ // TODO
+ e.printStackTrace();
+ }
+ }
private void listButtonOnClick() {
updateButton(false);
}
private void updateButton(boolean isAll) {
+ // #29618
+ // LockDao lockDao = (LockDao) LockDao.getInstance();
+ // lock = lockDao.lock(this, Constant.LOCK_UPDATE_NOTE);
LockDao lockDao = (LockDao) LockDao.getInstance();
- lock = lockDao.lock(this, Constant.LOCK_UPDATE_NOTE);
+ boolean b = lockDao.move(NoteUpdateTask.LOCK_OBJ,
+ Constant.LOCK_UPDATE_NOTE);
+ if (!b) {
+ EfException.msg(R.string.ErrorSystem);
+ return;
+ }
if (!lock) {
setStatus();
return;
}
- NoteUpdateTask task = new NoteUpdateTask(this, true, true, isAll);
+ pref.put(Constant.PREF_UPDATE_DATA, Constant.ON);
+ pref.update();
+
+ lock = false;
+ setStatus();
+
+ NoteUpdateTask task = new NoteUpdateTask(this, true, true, isAll, true);
AsyncTaskCommand command = new AsyncTaskCommand(this, task);
- // TODO
// command.setTitle(getString(R.string.updatorNoteDialogTitle));
// command.setButtonTitle(getString(R.string.cancelButton));
command.setCancelable(false);
command.setDialog(false);
command.execute("");
-
- setStatus();
}
-// public void done(int errorCode) {
-// LockDao lockDao = (LockDao) LockDao.getInstance();
-// lockDao.unlock(this, Constant.LOCK_UPDATE_NOTE);
-// lock = false;
-//
-// setStatus();
-// }
+ public void done(int errorCode) {
+ // // #29618
+ // // lock = false;
+ // lock = true;
+ //
+ // setStatus();
+
+ if (isInCycle) {
+ // onResume()で生成している & cancel()は、呼ばれていないため
+ //lockHandler = new LockHandler();
+ boolean isUnlock = false;
+ lockHandler.lock(this, Constant.LOCK_UPDATE_NOTE, true, isUnlock);
+ lock = false;
+ setStatus();
+ }
+ }
private void updateSpinnerItemSelected(AdapterView<?> parent, View view,
int position, long id) {
-
+ setStatus();
}
private void closeButtonOnClick() {
}
private void setStatus() {
- if (lock) {
+ if (!lock) {
msgLayout.setVisibility(View.VISIBLE);
confirmMsg.setText(getString(R.string.settingUpdateMsg));
loginButton.setEnabled(false);
+ logoutButton.setEnabled(false);
listButton.setEnabled(false);
bookButton.setEnabled(false);
updateButton.setEnabled(false);
updateSpinner.setEnabled(false);
+ updateDateLayout.setVisibility(View.GONE);
return;
}
confirmMsg.setText(getString(R.string.settingLoginMsg));
loginButton.setEnabled(true);
+ logoutButton.setEnabled(false);
listButton.setEnabled(false);
listButton.setVisibility(View.GONE);
bookButton.setEnabled(false);
updateButton.setEnabled(false);
updateSpinner.setEnabled(false);
+ updateDateLayout.setVisibility(View.GONE);
return;
}
NodeDao dao = (NodeDao) NodeCacheDao.getInstance();
List<Node> list = dao.searchBook();
- if (list == null || list.size() <= 0){
+ if (list == null || list.size() <= 0) {
msgLayout.setVisibility(View.VISIBLE);
confirmMsg.setText(getString(R.string.settingDoListMsg));
- loginButton.setEnabled(true);
+ loginButton.setEnabled(false);
+ logoutButton.setEnabled(true);
listButton.setEnabled(true);
listButton.setVisibility(View.VISIBLE);
bookButton.setEnabled(false);
updateButton.setEnabled(false);
updateSpinner.setEnabled(false);
+ updateDateLayout.setVisibility(View.GONE);
return;
- }
-
+ }
+
list = dao.searchSelectedBook();
if (list == null || list.size() <= 0) {
msgLayout.setVisibility(View.VISIBLE);
confirmMsg.setText(getString(R.string.settingDoSelectMsg));
- loginButton.setEnabled(true);
+ loginButton.setEnabled(false);
+ logoutButton.setEnabled(true);
listButton.setEnabled(false);
listButton.setVisibility(View.GONE);
bookButton.setEnabled(true);
updateButton.setEnabled(false);
updateSpinner.setEnabled(false);
+ updateDateLayout.setVisibility(View.GONE);
return;
}
- if (false) {
- // TODO
+ if (dao.isEmptyNote()) {
msgLayout.setVisibility(View.VISIBLE);
confirmMsg.setText(getString(R.string.settingDoUpdateMsg));
- loginButton.setEnabled(true);
+ loginButton.setEnabled(false);
+ logoutButton.setEnabled(true);
listButton.setEnabled(false);
listButton.setVisibility(View.GONE);
bookButton.setEnabled(true);
updateButton.setEnabled(true);
- updateSpinner.setEnabled(true);
+ updateSpinner.setEnabled(false);
+ updateDateLayout.setVisibility(View.GONE);
return;
}
- loginButton.setEnabled(true);
+ loginButton.setEnabled(false);
+ logoutButton.setEnabled(true);
listButton.setEnabled(false);
listButton.setVisibility(View.GONE);
bookButton.setEnabled(true);
updateButton.setEnabled(true);
updateSpinner.setEnabled(true);
+
+ int pos = updateSpinner.getSelectedItemPosition();
+ if (pos == 0) {
+ updateDateLayout.setVisibility(View.GONE);
+ } else {
+ updateDateLayout.setVisibility(View.VISIBLE);
+ }
+ String updateDate = pref.get(Constant.PREF_UPDATE_DATETIME);
+ updateDateText.setText(updateDate);
+
msgLayout.setVisibility(View.GONE);
}
+
}