Kaydet (Commit) 2fa47f8c authored tarafından Mert Tumer's avatar Mert Tumer Kaydeden (comit) Tomaž Vajngerl

tdf#106648 save current work when switching to other apps

Change-Id: Ieecfad2d0127fec850f7a4f3576a77eec94926b3
Signed-off-by: 's avatarMert Tumer <merttumer@outlook.com>
Reviewed-on: https://gerrit.libreoffice.org/58562
Tested-by: Jenkins
Reviewed-by: 's avatarTomaž Vajngerl <quikee@gmail.com>
üst e4c9d68b
......@@ -20,6 +20,7 @@ import org.libreoffice.kit.DirectBufferAllocator;
import org.libreoffice.kit.Document;
import org.libreoffice.kit.LibreOfficeKit;
import org.libreoffice.kit.Office;
import org.libreoffice.ui.FileUtilities;
import org.mozilla.gecko.gfx.BufferedCairoImage;
import org.mozilla.gecko.gfx.CairoImage;
import org.mozilla.gecko.gfx.IntSize;
......@@ -65,17 +66,33 @@ class LOKitTileProvider implements TileProvider {
mOffice.setMessageCallback(messageCallback);
mOffice.setOptionalFeatures(Document.LOK_FEATURE_DOCUMENT_PASSWORD);
mContext.setTileProvider(this);
mInputFile = input;
File f = new File(mInputFile);
final String cacheFile = mContext.getExternalCacheDir().getAbsolutePath() + "/lo_cached_" + f.getName();
if(mContext.firstStart){
File cacheFileObj = new File(cacheFile);
if(cacheFileObj.exists()) {
cacheFileObj.delete();
}
mContext.firstStart=false;
}
Log.i(LOGTAG, "====> Loading file '" + input + "'");
File fileToBeEncoded = new File(input);
File fileToBeEncoded;
if(isDocumentCached()){
fileToBeEncoded = new File(cacheFile);
}else{
fileToBeEncoded = new File(input);
}
String encodedFileName = android.net.Uri.encode(fileToBeEncoded.getName());
mDocument = mOffice.documentLoad(
(new File(fileToBeEncoded.getParent(),encodedFileName)).getPath()
);
if (mDocument == null && !mContext.isPasswordProtected()) {
Log.i(LOGTAG, "====> mOffice.documentLoad() returned null, trying to restart 'Office' and loading again");
mOffice.destroy();
......@@ -325,6 +342,43 @@ class LOKitTileProvider implements TileProvider {
LOKitShell.hideProgressSpinner(mContext);
}
public boolean isDocumentCached(){
File input = new File(mInputFile);
final String cacheFile = mContext.getExternalCacheDir().getAbsolutePath() + "/lo_cached_" + input.getName();
File cacheFileObj = new File(cacheFile);
if(cacheFileObj.exists())
return true;
return false;
}
public void cacheDocument() {
String cacheDir = mContext.getExternalCacheDir().getAbsolutePath();
File input = new File(mInputFile);
final String cacheFile = cacheDir + "/lo_cached_" + input.getName();
Log.i(LOGTAG, "cacheDocument: " + cacheFile);
if(isDocumentCached()){
LOKitShell.sendEvent(new LOEvent(LOEvent.UNO_COMMAND, ".uno:Save"));
}else{
mDocument.saveAs("file://"+cacheFile, FileUtilities.getExtension(input.getPath()).substring(1),"");
}
}
public void saveDocument(){
if(isDocumentCached()){
String format = FileUtilities.getExtension(mInputFile).substring(1);
String cacheDir = mContext.getExternalCacheDir().getAbsolutePath();
File input = new File(mInputFile);
final String cacheFile = cacheDir + "/lo_cached_" + input.getName();
String path = input.getAbsolutePath();
saveDocumentAs(path, format);
(new File(cacheFile)).delete();
}else{
mContext.saveDocument();
}
}
private void setupDocumentFonts() {
String values = mDocument.getCommandValues(".uno:CharFontName");
if (values == null || values.isEmpty())
......
......@@ -89,6 +89,7 @@ public class LibreOfficeMainActivity extends AppCompatActivity implements Settin
private File mTempFile = null;
private File mTempSlideShowFile = null;
private String newDocumentType = null;
public boolean firstStart = true;
BottomSheetBehavior bottomToolbarSheetBehavior;
BottomSheetBehavior toolbarColorPickerBottomSheetBehavior;
......@@ -460,7 +461,7 @@ public class LibreOfficeMainActivity extends AppCompatActivity implements Settin
if (isNewDocument) {
saveAs();
} else {
saveDocument();
mTileProvider.saveDocument();
}
isDocumentChanged=false;
onBackPressed();
......@@ -961,6 +962,14 @@ public class LibreOfficeMainActivity extends AppCompatActivity implements Settin
mFormattingController.handleActivityResult(requestCode, resultCode, data);
hideBottomToolbar();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//save document to cache
mTileProvider.cacheDocument();
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -165,7 +165,7 @@ public class ToolbarController implements Toolbar.OnMenuItemClickListener {
if (mContext.isNewDocument) {
mContext.saveAs();
} else {
mContext.saveDocument();
mContext.getTileProvider().saveDocument();
}
return true;
case R.id.action_parts:
......
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