aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/export/FieldnoteExport.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/export/FieldnoteExport.java')
-rw-r--r--main/src/cgeo/geocaching/export/FieldnoteExport.java52
1 files changed, 21 insertions, 31 deletions
diff --git a/main/src/cgeo/geocaching/export/FieldnoteExport.java b/main/src/cgeo/geocaching/export/FieldnoteExport.java
index a42a48a..9d0310c 100644
--- a/main/src/cgeo/geocaching/export/FieldnoteExport.java
+++ b/main/src/cgeo/geocaching/export/FieldnoteExport.java
@@ -9,6 +9,8 @@ import cgeo.geocaching.connector.gc.Login;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
+import cgeo.geocaching.settings.Settings;
+import cgeo.geocaching.ui.Formatter;
import cgeo.geocaching.utils.AsyncTaskWithProgress;
import cgeo.geocaching.utils.IOUtils;
import cgeo.geocaching.utils.Log;
@@ -70,21 +72,18 @@ class FieldnoteExport extends AbstractExport {
}
private Dialog getExportOptionsDialog(final Geocache[] caches, final Activity activity) {
- AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
// AlertDialog has always dark style, so we have to apply it as well always
- View layout = View.inflate(new ContextThemeWrapper(activity, R.style.dark), R.layout.fieldnote_export_dialog, null);
+ final View layout = View.inflate(new ContextThemeWrapper(activity, R.style.dark), R.layout.fieldnote_export_dialog, null);
builder.setView(layout);
final CheckBox uploadOption = (CheckBox) layout.findViewById(R.id.upload);
final CheckBox onlyNewOption = (CheckBox) layout.findViewById(R.id.onlynew);
- uploadOption.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onlyNewOption.setEnabled(uploadOption.isChecked());
- }
- });
+ if (Settings.getFieldnoteExportDate() > 0) {
+ onlyNewOption.setText(getString(R.string.export_fieldnotes_onlynew) + "\n(" + Formatter.formatShortDateTime(activity, Settings.getFieldnoteExportDate()) + ')');
+ }
builder.setPositiveButton(R.string.export, new DialogInterface.OnClickListener() {
@@ -132,13 +131,16 @@ class FieldnoteExport extends AbstractExport {
final StringBuilder fieldNoteBuffer = new StringBuilder();
try {
int i = 0;
- for (Geocache cache : caches) {
+ for (final Geocache cache : caches) {
if (cache.isLogOffline()) {
- appendFieldNote(fieldNoteBuffer, cache, cgData.loadLogOffline(cache.getGeocode()));
+ final LogEntry log = cgData.loadLogOffline(cache.getGeocode());
+ if (!onlyNew || onlyNew && log.date > Settings.getFieldnoteExportDate()) {
+ appendFieldNote(fieldNoteBuffer, cache, log);
+ }
publishProgress(++i);
}
}
- } catch (Exception e) {
+ } catch (final Exception e) {
Log.e("FieldnoteExport.ExportTask generation", e);
return false;
}
@@ -151,17 +153,17 @@ class FieldnoteExport extends AbstractExport {
exportLocation.mkdirs();
- SimpleDateFormat fileNameDateFormat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US);
+ final SimpleDateFormat fileNameDateFormat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US);
exportFile = new File(exportLocation.toString() + '/' + fileNameDateFormat.format(new Date()) + ".txt");
Writer fileWriter = null;
BufferedOutputStream buffer = null;
try {
- OutputStream os = new FileOutputStream(exportFile);
+ final OutputStream os = new FileOutputStream(exportFile);
buffer = new BufferedOutputStream(os);
fileWriter = new OutputStreamWriter(buffer, CharEncoding.UTF_16);
fileWriter.write(fieldNoteBuffer.toString());
- } catch (IOException e) {
+ } catch (final IOException e) {
Log.e("FieldnoteExport.ExportTask export", e);
return false;
} finally {
@@ -181,17 +183,11 @@ class FieldnoteExport extends AbstractExport {
}
final String uri = "http://www.geocaching.com/my/uploadfieldnotes.aspx";
- String page = Network.getResponseData(Network.getRequest(uri));
+ final String page = Login.getRequestLogged(uri, null);
- if (!Login.getLoginStatus(page)) {
- // Login.isActualLoginStatus() was wrong, we are not logged in
- final StatusCode loginState = Login.login();
- if (loginState == StatusCode.NO_ERROR) {
- page = Network.getResponseData(Network.getRequest(uri));
- } else {
- Log.e("FieldnoteExport.ExportTask upload: No login (error: " + loginState + ')');
- return false;
- }
+ if (StringUtils.isBlank(page)) {
+ Log.e("FieldnoteExport.ExportTask get page: No data from server");
+ return false;
}
final String[] viewstates = Login.getViewstates(page);
@@ -201,10 +197,6 @@ class FieldnoteExport extends AbstractExport {
"__EVENTARGUMENT", "",
"ctl00$ContentBody$btnUpload", "Upload Field Note");
- if (onlyNew) {
- uploadParams.put("ctl00$ContentBody$chkSuppressDate", "on");
- }
-
Login.putViewstates(uploadParams, viewstates);
Network.getResponseData(Network.postRequest(uri, uploadParams, "ctl00$ContentBody$FieldNoteLoader", "text/plain", exportFile));
@@ -222,9 +214,7 @@ class FieldnoteExport extends AbstractExport {
protected void onPostExecuteInternal(Boolean result) {
if (null != activity) {
if (result) {
- // if (onlyNew) {
- // // update last export time in settings when doing it ourself (currently we use the date check from gc.com)
- // }
+ Settings.setFieldnoteExportDate(System.currentTimeMillis());
ActivityMixin.showToast(activity, getName() + ' ' + getString(R.string.export_exportedto) + ": " + exportFile.toString());