Kaydet (Commit) 45f75e29 authored tarafından Mert Tumer's avatar Mert Tumer Kaydeden (comit) jan iversen

tdf#104856 - Fix for closing the document without asking for saving

Change-Id: I37b6fbf2639439a57c6d162b7817d009d1d49023
Reviewed-on: https://gerrit.libreoffice.org/32332Reviewed-by: 's avatarjan iversen <jani@documentfoundation.org>
Tested-by: 's avatarjan iversen <jani@documentfoundation.org>
üst 1c6993e6
......@@ -100,5 +100,11 @@
<string name="directory_browser_label">Choose Directory</string>
<string name="bad_directory">Invalid directory path</string>
<!-- Closing alert dialog strings -->
<string name="save_alert_dialog_title">Save the document before closing?</string>
<string name="save_document">SAVE</string>
<string name="cancel_save_document">CANCEL</string>
<string name="no_save_document">NO</string>
</resources>
......@@ -18,6 +18,7 @@ import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
......@@ -99,6 +100,7 @@ public class LibreOfficeMainActivity extends AppCompatActivity {
private boolean isKeyboardOpen = false;
private boolean isFormattingToolbarOpen = false;
private boolean isSearchToolbarOpen = false;
private boolean isDocumentChanged = false;
@Override
public void onCreate(Bundle savedInstanceState) {
Log.w(LOGTAG, "onCreate..");
......@@ -181,6 +183,16 @@ public class LibreOfficeMainActivity extends AppCompatActivity {
layerView.setInputConnectionHandler(new LOKitInputConnectionHandler());
mLayerClient.notifyReady();
layerView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if(keyEvent.getKeyCode() != KeyEvent.KEYCODE_BACK){
isDocumentChanged=true;
}
return false;
}
});
// create TextCursorLayer
mDocumentOverlay = new DocumentOverlay(mAppContext, layerView);
......@@ -269,6 +281,7 @@ public class LibreOfficeMainActivity extends AppCompatActivity {
protected void onPostExecute(Void param) {
Toast.makeText(activity, R.string.message_saved,
Toast.LENGTH_SHORT).show();
isDocumentChanged=false;
}
};
// Delay the call to document provider save operation and check the
......@@ -344,6 +357,45 @@ public class LibreOfficeMainActivity extends AppCompatActivity {
}
}
}
@Override
public void onBackPressed() {
if (!isDocumentChanged) {
super.onBackPressed();
return;
}
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
//SAVE
saveDocument();
isDocumentChanged=false;
onBackPressed();
break;
case DialogInterface.BUTTON_NEGATIVE:
//CANCEL
break;
case DialogInterface.BUTTON_NEUTRAL:
//NO
isDocumentChanged=false;
onBackPressed();
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(mAppContext);
builder.setMessage(R.string.save_alert_dialog_title)
.setPositiveButton(R.string.save_document, dialogClickListener)
.setNegativeButton(R.string.cancel_save_document, dialogClickListener)
.setNeutralButton(R.string.no_save_document, dialogClickListener)
.show();
}
public LOKitThread getLOKitThread() {
return sLOKitThread;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment