aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2014-07-08 19:16:49 +0200
committerBananeweizen <bananeweizen@gmx.de>2014-07-08 19:16:49 +0200
commitd1b56ca06b9248e68fc66fd0438fad0499c9f119 (patch)
tree28a1101d42f0b87accf119221008a019c6d1b40d
parent5b5e79caa76f1a57ad7426d5fd8df4c6c2ebde2d (diff)
downloadcgeo-d1b56ca06b9248e68fc66fd0438fad0499c9f119.zip
cgeo-d1b56ca06b9248e68fc66fd0438fad0499c9f119.tar.gz
cgeo-d1b56ca06b9248e68fc66fd0438fad0499c9f119.tar.bz2
fix #4049: trackable log send button not working
-rw-r--r--main/res/layout/logtrackable_activity.xml5
-rw-r--r--main/src/cgeo/geocaching/AbstractLoggingActivity.java13
-rw-r--r--main/src/cgeo/geocaching/LogTrackableActivity.java92
3 files changed, 59 insertions, 51 deletions
diff --git a/main/res/layout/logtrackable_activity.xml b/main/res/layout/logtrackable_activity.xml
index a43e919..2a901ea 100644
--- a/main/res/layout/logtrackable_activity.xml
+++ b/main/res/layout/logtrackable_activity.xml
@@ -72,11 +72,6 @@
android:textColor="?text_color"
android:textSize="14sp" />
</LinearLayout>
-
- <Button
- android:id="@+id/post"
- style="@style/button_full"
- android:text="@string/log_post" />
</LinearLayout>
</ScrollView> \ No newline at end of file
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));
+ }
+ }
+
}