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