diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2014-07-08 19:16:49 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2014-07-08 19:16:49 +0200 |
| commit | d1b56ca06b9248e68fc66fd0438fad0499c9f119 (patch) | |
| tree | 28a1101d42f0b87accf119221008a019c6d1b40d /main/src | |
| parent | 5b5e79caa76f1a57ad7426d5fd8df4c6c2ebde2d (diff) | |
| download | cgeo-d1b56ca06b9248e68fc66fd0438fad0499c9f119.zip cgeo-d1b56ca06b9248e68fc66fd0438fad0499c9f119.tar.gz cgeo-d1b56ca06b9248e68fc66fd0438fad0499c9f119.tar.bz2 | |
fix #4049: trackable log send button not working
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/AbstractLoggingActivity.java | 13 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/LogTrackableActivity.java | 92 |
2 files changed, 59 insertions, 46 deletions
diff --git a/main/src/cgeo/geocaching/AbstractLoggingActivity.java b/main/src/cgeo/geocaching/AbstractLoggingActivity.java index bca5db1..90fda53 100644 --- a/main/src/cgeo/geocaching/AbstractLoggingActivity.java +++ b/main/src/cgeo/geocaching/AbstractLoggingActivity.java @@ -18,6 +18,11 @@ import android.widget.EditText; public abstract class AbstractLoggingActivity extends AbstractActionBarActivity { + /** + * sub classes can disable the send button + */ + private boolean enableSend = true; + @Override public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.abstract_logging_activity, menu); @@ -48,6 +53,7 @@ public abstract class AbstractLoggingActivity extends AbstractActionBarActivity } menu.findItem(R.id.menu_smilies).setVisible(smileyVisible); + menu.findItem(R.id.menu_send).setVisible(enableSend); return true; } @@ -73,8 +79,13 @@ public abstract class AbstractLoggingActivity extends AbstractActionBarActivity protected abstract LogContext getLogContext(); - protected void insertIntoLog(final String newText, final boolean moveCursor) { + protected final void insertIntoLog(final String newText, final boolean moveCursor) { final EditText log = (EditText) findViewById(R.id.log); ActivityMixin.insertAtPosition(log, newText, moveCursor); } + + protected final void setLoggingEnabled(final boolean enabled) { + enableSend = enabled; + invalidateOptionsMenuCompatible(); + } } diff --git a/main/src/cgeo/geocaching/LogTrackableActivity.java b/main/src/cgeo/geocaching/LogTrackableActivity.java index 9f1bc88..ad4ed0e 100644 --- a/main/src/cgeo/geocaching/LogTrackableActivity.java +++ b/main/src/cgeo/geocaching/LogTrackableActivity.java @@ -41,7 +41,6 @@ import java.util.List; public class LogTrackableActivity extends AbstractLoggingActivity implements DateDialog.DateDialogParent { - @InjectView(R.id.post) protected Button buttonPost; @InjectView(R.id.type) protected Button typeButton; @InjectView(R.id.date) protected Button dateButton; @InjectView(R.id.tracking) protected EditText trackingEditText; @@ -59,14 +58,14 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat private int attempts = 0; private Trackable trackable; - private Handler showProgressHandler = new Handler() { + private final Handler showProgressHandler = new Handler() { @Override - public void handleMessage(Message msg) { + public void handleMessage(final Message msg) { showProgress(true); } }; - private Handler loadDataHandler = new Handler() { + private final Handler loadDataHandler = new Handler() { @Override public void handleMessage(final Message msg) { @@ -88,9 +87,7 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat } gettingViewstate = false; // we're done, user can post log - - buttonPost.setEnabled(true); - buttonPost.setOnClickListener(new PostListener()); + setLoggingEnabled(true); showProgress(false); } @@ -115,7 +112,7 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat }; @Override - public void onCreate(Bundle savedInstanceState) { + public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState, R.layout.logtrackable_activity); ButterKnife.inject(this); @@ -150,14 +147,14 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat } @Override - public void onConfigurationChanged(Configuration newConfig) { + public void onConfigurationChanged(final Configuration newConfig) { super.onConfigurationChanged(newConfig); init(); } @Override - public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo info) { + public void onCreateContextMenu(final ContextMenu menu, final View view, final ContextMenu.ContextMenuInfo info) { super.onCreateContextMenu(menu, view, info); final int viewId = view.getId(); @@ -169,7 +166,7 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat } @Override - public boolean onContextItemSelected(MenuItem item) { + public boolean onContextItemSelected(final MenuItem item) { final int group = item.getGroupId(); final int id = item.getItemId(); @@ -186,7 +183,7 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat registerForContextMenu(typeButton); typeButton.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(View view) { + public void onClick(final View view) { openContextMenu(view); } }); @@ -202,26 +199,22 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat } if (GCLogin.isEmpty(viewstates)) { - buttonPost.setEnabled(false); - buttonPost.setOnTouchListener(null); - buttonPost.setOnClickListener(null); - + setLoggingEnabled(false); new LoadDataThread().start(); } else { - buttonPost.setEnabled(true); - buttonPost.setOnClickListener(new PostListener()); + setLoggingEnabled(true); } disableSuggestions(trackingEditText); } @Override - public void setDate(Calendar dateIn) { + public void setDate(final Calendar dateIn) { date = dateIn; dateButton.setText(Formatter.formatShortDateVerbally(date.getTime().getTime())); } - public void setType(LogType type) { + public void setType(final LogType type) { typeSelected = type; typeButton.setText(typeSelected.getL10n()); } @@ -238,34 +231,13 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat private class DateListener implements View.OnClickListener { @Override - public void onClick(View arg0) { + public void onClick(final View arg0) { final DateDialog dateDialog = DateDialog.getInstance(date); dateDialog.setCancelable(true); dateDialog.show(getSupportFragmentManager(),"date_dialog"); } } - private class PostListener implements View.OnClickListener { - - protected EditText logEditText = (EditText) findViewById(R.id.log); - - @Override - public void onClick(View arg0) { - if (!gettingViewstate) { - waitDialog = ProgressDialog.show(LogTrackableActivity.this, null, res.getString(R.string.log_saving), true); - waitDialog.setCancelable(true); - - Settings.setTrackableAction(typeSelected.id); - - final String tracking = trackingEditText.getText().toString(); - final String log = logEditText.getText().toString(); - new PostLogThread(postLogHandler, tracking, log).start(); - } else { - showToast(res.getString(R.string.err_log_load_data_still)); - } - } - } - private class LoadDataThread extends Thread { public LoadDataThread() { @@ -302,7 +274,7 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat possibleLogTypes.clear(); possibleLogTypes.addAll(typesPre); } - } catch (Exception e) { + } catch (final Exception e) { Log.e("LogTrackableActivity.LoadDataThread.run", e); } @@ -329,7 +301,7 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat } } - public StatusCode postLogFn(String tracking, String log) { + public StatusCode postLogFn(final String tracking, final String log) { try { final StatusCode status = GCParser.postLogTrackable(guid, tracking, viewstates, typeSelected, date.get(Calendar.YEAR), (date.get(Calendar.MONTH) + 1), date.get(Calendar.DATE), log); @@ -340,7 +312,7 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat } return status; - } catch (Exception e) { + } catch (final Exception e) { Log.e("LogTrackableActivity.postLogFn", e); } @@ -359,4 +331,34 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat protected LogContext getLogContext() { return new LogContext(trackable, null); } + + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_send: + sendLog(); + return true; + default: + break; + } + + return super.onOptionsItemSelected(item); + } + + private void sendLog() { + if (!gettingViewstate) { + waitDialog = ProgressDialog.show(LogTrackableActivity.this, null, res.getString(R.string.log_saving), true); + waitDialog.setCancelable(true); + + Settings.setTrackableAction(typeSelected.id); + + final EditText logEditText = (EditText) findViewById(R.id.log); + final String tracking = trackingEditText.getText().toString(); + final String log = logEditText.getText().toString(); + new PostLogThread(postLogHandler, tracking, log).start(); + } else { + showToast(res.getString(R.string.err_log_load_data_still)); + } + } + } |
