diff --git a/part/CMakeLists.txt b/part/CMakeLists.txt
--- a/part/CMakeLists.txt
+++ b/part/CMakeLists.txt
@@ -39,3 +39,4 @@
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ark_part.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR})
install(FILES ark_part.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/ark)
+install(FILES ark_viewer.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/ark)
diff --git a/part/ark_viewer.rc b/part/ark_viewer.rc
new file mode 100644
--- /dev/null
+++ b/part/ark_viewer.rc
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/part/arkviewer.h b/part/arkviewer.h
--- a/part/arkviewer.h
+++ b/part/arkviewer.h
@@ -24,26 +24,22 @@
#include "ui_arkviewer.h"
-#include
+#include
#include
#include
-#include
-#include
#include
+#include
-class ArkViewer : public QDialog, public Ui::ArkViewer
+class ArkViewer : public KParts::MainWindow, public Ui::ArkViewer
{
Q_OBJECT
public:
~ArkViewer() override;
static void view(const QString& fileName);
-private slots:
- void dialogClosed();
-
private:
explicit ArkViewer();
diff --git a/part/arkviewer.cpp b/part/arkviewer.cpp
--- a/part/arkviewer.cpp
+++ b/part/arkviewer.cpp
@@ -26,42 +26,34 @@
#include
#include
#include
+#include
+#include
#include
-#include
-#include
+#include
-#include
#include
#include
#include
#include
ArkViewer::ArkViewer()
- : QDialog()
+ : KParts::MainWindow()
{
qCDebug(ARK) << "ArkViewer opened";
- setAttribute(Qt::WA_DeleteOnClose);
-
setupUi(this);
- // Bug 369390: This prevents the Enter key from closing the dialog.
+ // Bug 369390: This prevents the Enter key from closing the window.
m_buttonBox->button(QDialogButtonBox::Close)->setAutoDefault(false);
- connect(m_buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
- connect(this, &ArkViewer::finished, this, &ArkViewer::dialogClosed);
-}
+ connect(m_buttonBox, &QDialogButtonBox::rejected, this, &QMainWindow::close);
-ArkViewer::~ArkViewer()
-{
+ setXMLFile(QStringLiteral("ark_viewer.rc"));
+ setupGUI(ToolBar);
}
-void ArkViewer::dialogClosed()
+ArkViewer::~ArkViewer()
{
- // Save viewer dialog window size
- KConfigGroup group(KSharedConfig::openConfig(), "Viewer");
- KWindowConfig::saveWindowSize(windowHandle(), group, KConfigBase::Persistent);
-
if (m_part) {
QProgressDialog progressDialog(this);
progressDialog.setWindowTitle(i18n("Closing preview"));
@@ -74,16 +66,17 @@
// #261785: this preview dialog is not modal, so we need to delete
// the previewed file ourselves when the dialog is closed;
- // we used to remove it at the end of ArkViewer::view() when
- // QDialog::exec() was called instead of QDialog::show().
const QString previewedFilePath(m_part.data()->url().toDisplayString(QUrl::PreferLocalFile));
m_part.data()->closeUrl();
if (!previewedFilePath.isEmpty()) {
QFile::remove(previewedFilePath);
}
}
+
+ guiFactory()->removeClient(m_part);
+ delete m_part;
}
void ArkViewer::view(const QString& fileName)
@@ -157,7 +150,7 @@
internalViewer->show();
if (internalViewer->viewInInternalViewer(fileName, mimeType)) {
// The internal viewer is showing the file, and will
- // remove the temporary file in dialogClosed(). So there
+ // remove the temporary file in its destructor. So there
// is no more to do here.
return;
}
@@ -178,11 +171,6 @@
{
setWindowFilePath(fileName);
- // Load viewer dialog window size from config file
- KConfigGroup group(KSharedConfig::openConfig(), "Viewer");
- KWindowConfig::restoreWindowSize(windowHandle(), group);
-
-
// Set icon and comment for the mimetype.
m_iconLabel->setPixmap(QIcon::fromTheme(mimeType.iconName()).pixmap(IconSize(KIconLoader::Desktop), IconSize(KIconLoader::Desktop)));
m_commentLabel->setText(mimeType.comment());
@@ -205,7 +193,10 @@
}
// Insert the KPart into its placeholder.
- layout()->replaceWidget(m_partPlaceholder, m_part.data()->widget());
+ centralWidget()->layout()->replaceWidget(m_partPlaceholder, m_part.data()->widget());
+
+ createGUI(m_part.data());
+ setAutoSaveSettings(QStringLiteral("Viewer"), true);
m_part.data()->openUrl(QUrl::fromLocalFile(fileName));
m_part.data()->widget()->setFocus();
diff --git a/part/arkviewer.ui b/part/arkviewer.ui
--- a/part/arkviewer.ui
+++ b/part/arkviewer.ui
@@ -1,106 +1,75 @@
ArkViewer
-
+
0
0
- 640
- 480
+ 800
+ 600
-
+ MainWindow
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
-
- mime icon
-
-
-
- -
-
-
- mime comment
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
- QDialogButtonBox::Close
-
-
-
-
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
-
+
+
+ mime icon
+
+
+
+ -
+
+
+ mime comment
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Close
+
+
+
+
+
-
-
- m_buttonBox
- accepted()
- ArkViewer
- accept()
-
-
- 248
- 254
-
-
- 157
- 274
-
-
-
-
- m_buttonBox
- rejected()
- ArkViewer
- reject()
-
-
- 316
- 260
-
-
- 286
- 274
-
-
-
-
+
diff --git a/part/part.cpp b/part/part.cpp
--- a/part/part.cpp
+++ b/part/part.cpp
@@ -52,6 +52,7 @@
#include
#include
#include
+#include
#include
#include
#include