summaryrefslogtreecommitdiff
path: root/uui
diff options
context:
space:
mode:
authorJuergen Funk <juergen.funk_ml@cib.de>2017-04-12 11:26:10 +0200
committerKatarina Behrens <Katarina.Behrens@cib.de>2017-06-06 15:58:02 +0200
commit6ca3b3648e25ae9d4d2d29a0df83349198ec3f5e (patch)
tree664881fdfb741597f78898650a2a0e0396e1084d /uui
parentcab3468e96552348ae46121a490f1f6160b65213 (diff)
tdf#106942 Wrong message when lock file is empty or corrupt
1. Erase empty or corrupt lockfile, when reading it fails and skip "Locked Document Dialog" in that case 2. Show Dialog (use LockFileIgnoreRequest -> LockFailedQueryBox) when create lock file is not possible. Two Dialogs: "lock file create error" and "empty lockfile is present" Set the document to read-only when creating lockfile is not possible. If lockfile is corrupt or empty, inform the user. They can interrupt loading the document or open it read-only, which also erases the corrupt lock file after closing the document 3. Handling for the two Dialogs Use LockFileIgnoreRequst for create lockfile error and add a new LockFileCorruptRequest, (lock file is corrupt). Change and generate new messages for both dialogs in english Change-Id: I35c377f85b5113e8ffb89d83b9544b8ebc81d89f Reviewed-on: https://gerrit.libreoffice.org/36658 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
Diffstat (limited to 'uui')
-rw-r--r--uui/AllLangResTarget_uui.mk1
-rw-r--r--uui/Library_uui.mk1
-rw-r--r--uui/source/iahndl-locking.cxx42
-rw-r--r--uui/source/iahndl.cxx2
-rw-r--r--uui/source/iahndl.hxx2
-rw-r--r--uui/source/ids.hrc41
-rw-r--r--uui/source/lockcorrupt.cxx44
-rw-r--r--uui/source/lockcorrupt.hxx33
-rw-r--r--uui/source/lockcorrupt.src37
-rw-r--r--uui/source/lockfailed.cxx5
-rw-r--r--uui/source/lockfailed.src6
11 files changed, 181 insertions, 33 deletions
diff --git a/uui/AllLangResTarget_uui.mk b/uui/AllLangResTarget_uui.mk
index 2cd36571b0e8..fe59c93c6201 100644
--- a/uui/AllLangResTarget_uui.mk
+++ b/uui/AllLangResTarget_uui.mk
@@ -25,6 +25,7 @@ $(eval $(call gb_SrsTarget_add_files,uui/res,\
uui/source/filechanged.src \
uui/source/ids.src \
uui/source/lockfailed.src \
+ uui/source/lockcorrupt.src \
uui/source/nameclashdlg.src \
uui/source/openlocked.src \
uui/source/passworddlg.src \
diff --git a/uui/Library_uui.mk b/uui/Library_uui.mk
index 6f3a8417ea78..6a2096b86632 100644
--- a/uui/Library_uui.mk
+++ b/uui/Library_uui.mk
@@ -49,6 +49,7 @@ $(eval $(call gb_Library_add_exception_objects,uui,\
uui/source/iahndl-ssl \
uui/source/interactionhandler \
uui/source/lockfailed \
+ uui/source/lockcorrupt \
uui/source/logindlg \
uui/source/masterpasscrtdlg \
uui/source/masterpassworddlg \
diff --git a/uui/source/iahndl-locking.cxx b/uui/source/iahndl-locking.cxx
index dfa051e8c0b1..6a1631462031 100644
--- a/uui/source/iahndl-locking.cxx
+++ b/uui/source/iahndl-locking.cxx
@@ -23,6 +23,7 @@
#include <com/sun/star/document/LockedDocumentRequest.hpp>
#include <com/sun/star/document/LockedOnSavingRequest.hpp>
#include <com/sun/star/document/LockFileIgnoreRequest.hpp>
+#include <com/sun/star/document/LockFileCorruptRequest.hpp>
#include <com/sun/star/document/OwnLockOnDocumentRequest.hpp>
#include <com/sun/star/task/XInteractionApprove.hpp>
#include <com/sun/star/task/XInteractionDisapprove.hpp>
@@ -40,6 +41,7 @@
#include "alreadyopen.hxx"
#include "filechanged.hxx"
#include "lockfailed.hxx"
+#include "lockcorrupt.hxx"
#include "iahndl.hxx"
@@ -172,11 +174,16 @@ handleChangedByOthersRequest_(
}
}
+const sal_uInt16 UUI_DOC_CreateErrDlg = 0;
+const sal_uInt16 UUI_DOC_CorruptErrDlg = 1;
+
+
+
void
-handleLockFileIgnoreRequest_(
+handleLockFileProblemRequest_(
vcl::Window * pParent,
uno::Sequence< uno::Reference< task::XInteractionContinuation > > const &
- rContinuations )
+ rContinuations, sal_uInt16 nWhichDlg )
{
uno::Reference< task::XInteractionApprove > xApprove;
uno::Reference< task::XInteractionAbort > xAbort;
@@ -192,8 +199,19 @@ handleLockFileIgnoreRequest_(
if (!xManager.get())
return;
- ScopedVclPtrInstance< LockFailedQueryBox > xDialog(pParent, xManager.get());
- sal_Int32 nResult = xDialog->Execute();
+ sal_Int32 nResult;
+
+ if (nWhichDlg == UUI_DOC_CreateErrDlg)
+ {
+ ScopedVclPtrInstance< LockFailedQueryBox > xDialog(pParent, xManager.get());
+ nResult = xDialog->Execute();
+ }
+ else
+ {
+ ScopedVclPtrInstance< LockCorruptQueryBox > xDialog(pParent, xManager.get());
+ nResult = xDialog->Execute();
+ }
+
if ( nResult == RET_OK )
xApprove->select();
@@ -267,8 +285,9 @@ UUIInteractionHelper::handleChangedByOthersRequest(
return false;
}
+
bool
-UUIInteractionHelper::handleLockFileIgnoreRequest(
+UUIInteractionHelper::handleLockFileProblemRequest(
uno::Reference< task::XInteractionRequest > const & rRequest)
{
uno::Any aAnyRequest(rRequest->getRequest());
@@ -276,10 +295,19 @@ UUIInteractionHelper::handleLockFileIgnoreRequest(
document::LockFileIgnoreRequest aLockFileIgnoreRequest;
if (aAnyRequest >>= aLockFileIgnoreRequest )
{
- handleLockFileIgnoreRequest_( getParentProperty(),
- rRequest->getContinuations() );
+ handleLockFileProblemRequest_( getParentProperty(),
+ rRequest->getContinuations(), UUI_DOC_CreateErrDlg );
return true;
}
+
+ document::LockFileCorruptRequest aLockFileCorruptRequest;
+ if (aAnyRequest >>= aLockFileCorruptRequest )
+ {
+ handleLockFileProblemRequest_( getParentProperty(),
+ rRequest->getContinuations(), UUI_DOC_CorruptErrDlg );
+ return true;
+ }
+
return false;
}
diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx
index 0ee640216f98..5d0d55a909c2 100644
--- a/uui/source/iahndl.cxx
+++ b/uui/source/iahndl.cxx
@@ -807,7 +807,7 @@ UUIInteractionHelper::handleRequest_impl(
if ( handleChangedByOthersRequest( rRequest ) )
return true;
- if ( handleLockFileIgnoreRequest( rRequest ) )
+ if ( handleLockFileProblemRequest( rRequest ) )
return true;
task::DocumentMacroConfirmationRequest aMacroConfirmRequest;
diff --git a/uui/source/iahndl.hxx b/uui/source/iahndl.hxx
index 175f928da837..877c216596dc 100644
--- a/uui/source/iahndl.hxx
+++ b/uui/source/iahndl.hxx
@@ -232,7 +232,7 @@ private:
css::uno::Reference<
css::task::XInteractionRequest > const & rRequest);
- bool handleLockFileIgnoreRequest(
+ bool handleLockFileProblemRequest(
css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
bool handleCustomRequest(
diff --git a/uui/source/ids.hrc b/uui/source/ids.hrc
index bc24f7fea1a3..635c708d3d8c 100644
--- a/uui/source/ids.hrc
+++ b/uui/source/ids.hrc
@@ -47,26 +47,29 @@
#define STR_ALREADYOPEN_OPEN_BTN (RID_UUI_START + 42)
#define STR_LOCKFAILED_TITLE (RID_UUI_START + 43)
#define STR_LOCKFAILED_MSG (RID_UUI_START + 44)
-#define STR_LOCKFAILED_DONTSHOWAGAIN (RID_UUI_START + 45)
-#define STR_TRYLATER_TITLE (RID_UUI_START + 46)
-#define STR_TRYLATER_MSG (RID_UUI_START + 47)
-#define STR_TRYLATER_RETRYSAVING_BTN (RID_UUI_START + 48)
-#define STR_TRYLATER_SAVEAS_BTN (RID_UUI_START + 49)
-#define STR_ALREADYOPEN_SAVE_MSG (RID_UUI_START + 50)
-#define STR_ALREADYOPEN_RETRY_SAVE_BTN (RID_UUI_START + 51)
-#define STR_ALREADYOPEN_SAVE_BTN (RID_UUI_START + 52)
+#define STR_LOCKFAILED_OPENREADONLY_BTN (RID_UUI_START + 45)
+#define STR_LOCKCORRUPT_TITLE (RID_UUI_START + 46)
+#define STR_LOCKCORRUPT_MSG (RID_UUI_START + 47)
+#define STR_LOCKCORRUPT_OPENREADONLY_BTN (RID_UUI_START + 48)
+#define STR_TRYLATER_TITLE (RID_UUI_START + 49)
+#define STR_TRYLATER_MSG (RID_UUI_START + 50)
+#define STR_TRYLATER_RETRYSAVING_BTN (RID_UUI_START + 51)
+#define STR_TRYLATER_SAVEAS_BTN (RID_UUI_START + 52)
+#define STR_ALREADYOPEN_SAVE_MSG (RID_UUI_START + 53)
+#define STR_ALREADYOPEN_RETRY_SAVE_BTN (RID_UUI_START + 54)
+#define STR_ALREADYOPEN_SAVE_BTN (RID_UUI_START + 55)
-#define STR_WARNING_INCOMPLETE_ENCRYPTION_TITLE (RID_UUI_START + 54)
-#define STR_ENTER_PASSWORD_TO_OPEN (RID_UUI_START + 56)
-#define STR_ENTER_PASSWORD_TO_MODIFY (RID_UUI_START + 57)
-#define STR_RENAME_OR_REPLACE (RID_UUI_START + 58)
-#define STR_NAME_CLASH_RENAME_ONLY (RID_UUI_START + 59)
-#define STR_SAME_NAME_USED (RID_UUI_START + 60)
-#define STR_ENTER_SIMPLE_PASSWORD (RID_UUI_START + 61)
-#define STR_CONFIRM_SIMPLE_PASSWORD (RID_UUI_START + 62)
-#define STR_TITLE_CREATE_PASSWORD (RID_UUI_START + 63)
-#define STR_TITLE_ENTER_PASSWORD (RID_UUI_START + 64)
-#define STR_PASSWORD_MISMATCH (RID_UUI_START + 65)
+#define STR_WARNING_INCOMPLETE_ENCRYPTION_TITLE (RID_UUI_START + 56)
+#define STR_ENTER_PASSWORD_TO_OPEN (RID_UUI_START + 57)
+#define STR_ENTER_PASSWORD_TO_MODIFY (RID_UUI_START + 58)
+#define STR_RENAME_OR_REPLACE (RID_UUI_START + 59)
+#define STR_NAME_CLASH_RENAME_ONLY (RID_UUI_START + 60)
+#define STR_SAME_NAME_USED (RID_UUI_START + 61)
+#define STR_ENTER_SIMPLE_PASSWORD (RID_UUI_START + 62)
+#define STR_CONFIRM_SIMPLE_PASSWORD (RID_UUI_START + 63)
+#define STR_TITLE_CREATE_PASSWORD (RID_UUI_START + 64)
+#define STR_TITLE_ENTER_PASSWORD (RID_UUI_START + 65)
+#define STR_PASSWORD_MISMATCH (RID_UUI_START + 66)
#define ERRCODE_UUI_IO_ABORT (ERRCODE_AREA_UUI + 0)
#define ERRCODE_UUI_IO_ACCESSDENIED (ERRCODE_AREA_UUI + 1)
diff --git a/uui/source/lockcorrupt.cxx b/uui/source/lockcorrupt.cxx
new file mode 100644
index 000000000000..a22ad863ccc0
--- /dev/null
+++ b/uui/source/lockcorrupt.cxx
@@ -0,0 +1,44 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "ids.hrc"
+#include "lockcorrupt.hxx"
+
+#include <vcl/button.hxx>
+
+LockCorruptQueryBox::LockCorruptQueryBox( vcl::Window* pParent, ResMgr* pResMgr ) :
+ MessBox(pParent, 0,
+ ResId(STR_LOCKCORRUPT_TITLE, *pResMgr).toString(),
+ OUString() )
+{
+ SetImage( ErrorBox::GetStandardImage() );
+
+ AddButton(ResId(STR_LOCKCORRUPT_OPENREADONLY_BTN, *pResMgr).toString(), RET_OK,
+ ButtonDialogFlags::Default | ButtonDialogFlags::OK | ButtonDialogFlags::Focus);
+
+ AddButton( StandardButtonType::Cancel, RET_CANCEL, ButtonDialogFlags::Cancel );
+
+ SetMessText(ResId(STR_LOCKCORRUPT_MSG, *pResMgr ).toString());
+}
+
+LockCorruptQueryBox::~LockCorruptQueryBox()
+{
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/uui/source/lockcorrupt.hxx b/uui/source/lockcorrupt.hxx
new file mode 100644
index 000000000000..b83d94084d8c
--- /dev/null
+++ b/uui/source/lockcorrupt.hxx
@@ -0,0 +1,33 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef INCLUDED_UUI_SOURCE_LOCKCORRUPT_HXX
+#define INCLUDED_UUI_SOURCE_LOCKCORRUPT_HXX
+
+#include <vcl/msgbox.hxx>
+
+class LockCorruptQueryBox : public MessBox
+{
+public:
+ LockCorruptQueryBox( vcl::Window* pParent, ResMgr* pResMgr );
+ virtual ~LockCorruptQueryBox() override;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/uui/source/lockcorrupt.src b/uui/source/lockcorrupt.src
new file mode 100644
index 000000000000..e26535f3f925
--- /dev/null
+++ b/uui/source/lockcorrupt.src
@@ -0,0 +1,37 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#define __RSC
+
+#include "ids.hrc"
+
+String STR_LOCKCORRUPT_TITLE
+{
+ Text [ en-US ] = "Lock file is corrupted";
+};
+String STR_LOCKCORRUPT_MSG
+{
+ Text [ en-US ] = "The lock file is corrupted and probably empty. Opening the document read-only and closing it again removes the corrupted lock file.";
+};
+String STR_LOCKCORRUPT_OPENREADONLY_BTN
+{
+ Text [ en-US ] = "Open ~Read-Only";
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/uui/source/lockfailed.cxx b/uui/source/lockfailed.cxx
index 77ceb7e8d625..63ad3a76f2a0 100644
--- a/uui/source/lockfailed.cxx
+++ b/uui/source/lockfailed.cxx
@@ -29,11 +29,12 @@ LockFailedQueryBox::LockFailedQueryBox( vcl::Window* pParent, ResMgr* pResMgr )
{
SetImage( ErrorBox::GetStandardImage() );
- AddButton( StandardButtonType::OK, RET_OK, ButtonDialogFlags::OK );
+ AddButton(ResId(STR_LOCKFAILED_OPENREADONLY_BTN, *pResMgr).toString(), RET_OK,
+ ButtonDialogFlags::Default | ButtonDialogFlags::OK | ButtonDialogFlags::Focus);
+
AddButton( StandardButtonType::Cancel, RET_CANCEL, ButtonDialogFlags::Cancel );
SetMessText(ResId(STR_LOCKFAILED_MSG, *pResMgr ).toString());
- SetCheckBoxText(ResId(STR_LOCKFAILED_DONTSHOWAGAIN, *pResMgr).toString());
}
LockFailedQueryBox::~LockFailedQueryBox()
diff --git a/uui/source/lockfailed.src b/uui/source/lockfailed.src
index 91b5bff7f559..5fa7ba5b3482 100644
--- a/uui/source/lockfailed.src
+++ b/uui/source/lockfailed.src
@@ -25,11 +25,11 @@ String STR_LOCKFAILED_TITLE
};
String STR_LOCKFAILED_MSG
{
- Text [ en-US ] = "The file could not be locked for exclusive access by %PRODUCTNAME, due to missing permission to create a lock file on that file location.";
+ Text [ en-US ] = "The lock file could not be created for exclusive access by %PRODUCTNAME, due to missing permission to create a lock file on that file location or lack of free disk space.";
};
-String STR_LOCKFAILED_DONTSHOWAGAIN
+String STR_LOCKFAILED_OPENREADONLY_BTN
{
- Text [ en-US ] = "~Do not show this message again";
+ Text [ en-US ] = "Open ~Read-Only";
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */