Hello community, here is the log from the commit of package ark for openSUSE:Factory checked in at 2015-01-08 23:15:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ark (Old) and /work/SRC/openSUSE:Factory/.ark.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ark" Changes: -------- --- /work/SRC/openSUSE:Factory/ark/ark.changes 2014-11-19 20:29:55.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.ark.new/ark.changes 2015-01-08 23:15:44.000000000 +0100 @@ -1,0 +2,7 @@ +Wed Dec 17 20:31:57 UTC 2014 - [email protected] + +- Update to KDE Applications 14.12.0 + * KDE Applications 14.12.0 + * See https://www.kde.org/announcements/announce-applications-14.12.0.php + +------------------------------------------------------------------- Old: ---- ark-4.14.3.tar.xz New: ---- ark-14.12.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ark.spec ++++++ --- /var/tmp/diff_new_pack.HJeDHU/_old 2015-01-08 23:15:45.000000000 +0100 +++ /var/tmp/diff_new_pack.HJeDHU/_new 2015-01-08 23:15:45.000000000 +0100 @@ -17,7 +17,7 @@ Name: ark -Version: 4.14.3 +Version: 14.12.0 Release: 0 Summary: KDE Archiver Tool License: GPL-2.0+ ++++++ ark-4.14.3.tar.xz -> ark-14.12.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ark-4.14.3/app/ark.appdata.xml new/ark-14.12.0/app/ark.appdata.xml --- old/ark-4.14.3/app/ark.appdata.xml 2014-10-25 14:53:24.000000000 +0200 +++ new/ark-14.12.0/app/ark.appdata.xml 2014-11-24 00:37:06.000000000 +0100 @@ -10,6 +10,7 @@ <name xml:lang="cs">Ark</name> <name xml:lang="da">Ark</name> <name xml:lang="de">Ark</name> + <name xml:lang="el">Ark</name> <name xml:lang="en-GB">Ark</name> <name xml:lang="es">Ark</name> <name xml:lang="et">Ark</name> @@ -44,6 +45,7 @@ <summary xml:lang="cs">Archivační nástroj</summary> <summary xml:lang="da">Arkiveringsværktøj</summary> <summary xml:lang="de">Archivprogramm</summary> + <summary xml:lang="el">Εργαλείο αρχειοθέτησης</summary> <summary xml:lang="en-GB">Archiving Tool</summary> <summary xml:lang="es">Herramienta de archivado</summary> <summary xml:lang="et">Arhiivide haldamise rakendus</summary> @@ -82,6 +84,7 @@ <p xml:lang="ca">L'Ark és una utilitat gràfica de compressió/descompressió de fitxers que implementa múltiples formats, incloent tar, gzip, bzip2, rar i zip, i també imatges de CD-ROM. L'Ark es pot utilitzar per explorar, extreure, crear, i modificar arxiua.</p> <p xml:lang="da">Ark er et grafisk værktøj til komprimering/dekomprimering, med understøttelse for flere formater, derunder tar, gzip, bzip2, rar og zip, såvel som cd-rom-imagefiler. Ark kan bruges til at gennemse, udtrække, oprette og redigere.</p> <p xml:lang="de">Ark ist ein grafisches Dienstprogramm zum Packen/Entpacken von Dateien mit Unterstützung für mehrere Formate wie tar, gzip, bzip2, rar, zip und auch CD-Abbilder. Mit Ark können Sie können Sie Archive durchsehen, entpacken, erstellen und bearbeiten.</p> + <p xml:lang="el">Το Ark είναι ένα γραφικό εργαλείο συμπίεσης/αποσυμπίεσης αρχείων με υποστήριξη για πολλούς τύπους αποθήκευσης, όπως tar, gzip, bzip2, rar και zip, καθώς επίσης και εικόνες CD-ROM. To Ark χρησιμεύει για την περιήγηση, εξαγωγή, δημιουργία και τροποποίηση αρχειοθηκών.</p> <p xml:lang="en-GB">Ark is a graphical file compression/decompression utility with support for multiple formats, including tar, gzip, bzip2, rar and zip, as well as CD-ROM images. Ark can be used to browse, extract, create, and modify archives.</p> <p xml:lang="es">Ark es una utilidad gráfica de compresión y descompresión de archivos que permite usar diversos formatos, como tar, gzip, bzip2, rar y zip, así como imágenes de CD-ROM. Ark se puede usar para explorar, extraer, crear y modificar archivos comprimidos.</p> <p xml:lang="et">Ark on graafiline failide tihendamise ehk kokkupakkimise ja nende lahtipakkimise tööriist, mis toetab väga paljusid vorminguid, sealhulgas tar, gzip, bzip2, rar and zip, samuti CD-ROM-i tõmmised. Arki abil saab arhiivifaile sirvida, lahti pakkida, luua ja muuta.</p> @@ -115,6 +118,7 @@ <p xml:lang="cs">Vlastnosti:</p> <p xml:lang="da">Funktioner:</p> <p xml:lang="de">Leistungsmerkmale:</p> + <p xml:lang="el">Χαρακτηριστικά:</p> <p xml:lang="en-GB">Features:</p> <p xml:lang="es">Funcionalidades:</p> <p xml:lang="et">Omadused:</p> @@ -141,7 +145,7 @@ <p xml:lang="uk">Можливості:</p> <p xml:lang="x-test">xxFeatures:xx</p> <p xml:lang="zh-CN">功能:</p> - <p xml:lang="zh-TW">特色:</p> + <p xml:lang="zh-TW">功能:</p> <ul> <li>Several formats supported: gzip, bzip2, zip, rar, 7z and more</li> <li xml:lang="ar">دعم صيغ متعدّدة: مثل gzip، و bzip2، و zip، و rar، و 7z وغيرها</li> @@ -150,6 +154,7 @@ <li xml:lang="cs">Je podporováno několik formátů: gzip, bzip2, zip, rar, 7z a další</li> <li xml:lang="da">Flere understøttede formater: gzip, bzip2, zip, rar, 7z og flere</li> <li xml:lang="de">Mehrere unterstützte Formate wie gzip, bzip2, zip, rar, 7z und mehr</li> + <li xml:lang="el">Υποστηρίζονται πολλοί τύποι αποθήκευσης: gzip, bzip2, zip, rar, 7z και άλλοι</li> <li xml:lang="en-GB">Several formats supported: gzip, bzip2, zip, rar, 7z and more</li> <li xml:lang="es">Permite el uso de diversos formatos: gzip, bzip2, zip, rar, 7z y más</li> <li xml:lang="et">Paljude vormingute toetus: gzip, bzip2, zip, rar, 7z ja veel paljud.</li> @@ -183,6 +188,7 @@ <li xml:lang="cs">Náhled obsahu souborů bez jejich rozbalení</li> <li xml:lang="da">Forhåndsvis filindhold uden at udtrække filer</li> <li xml:lang="de">Vorschau der Dateiinhalte ohne das Entpacken der Dateien</li> + <li xml:lang="el">Προεπισκόπηση περιεχομένων αρχείου χωρίς εξαγωγή αρχείων</li> <li xml:lang="en-GB">Preview file contents without extracting files</li> <li xml:lang="es">Vista previa del contenido de archivos sin extraerlos</li> <li xml:lang="et">Failide sisu näitamine ilma neid lahti pakkimata.</li> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ark-4.14.3/app/ark_addtoservicemenu.desktop new/ark-14.12.0/app/ark_addtoservicemenu.desktop --- old/ark-4.14.3/app/ark_addtoservicemenu.desktop 2014-10-25 14:53:24.000000000 +0200 +++ new/ark-14.12.0/app/ark_addtoservicemenu.desktop 2014-11-24 00:37:06.000000000 +0100 @@ -256,6 +256,7 @@ Name[cs]=Jako archiv TAR.GZ Name[da]=Som TAR.GZ-arkiv Name[de]=Als TAR.GZ-Archiv +Name[el]=Ως αρχειοθήκη TAR.GZ Name[en_GB]=As TAR.GZ Archive Name[es]=Como archivo comprimido TAR.GZ Name[et]=TAR.GZ-arhiivina diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ark-4.14.3/app/mainwindow.cpp new/ark-14.12.0/app/mainwindow.cpp --- old/ark-4.14.3/app/mainwindow.cpp 2014-10-25 14:53:24.000000000 +0200 +++ new/ark-14.12.0/app/mainwindow.cpp 2014-11-24 00:37:06.000000000 +0100 @@ -38,6 +38,7 @@ #include <KDebug> #include <KEditToolBar> #include <KShortcutsDialog> +#include <KXMLGUIFactory> #include <QDragEnterEvent> #include <QDragMoveEvent> @@ -69,6 +70,8 @@ if (m_recentFilesAction) { m_recentFilesAction->saveEntries(KGlobal::config()->group("Recent Files")); } + + guiFactory()->removeClient(m_part); delete m_part; m_part = 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ark-4.14.3/part/ark_part.rc new/ark-14.12.0/part/ark_part.rc --- old/ark-4.14.3/part/ark_part.rc 2014-10-25 14:53:24.000000000 +0200 +++ new/ark-14.12.0/part/ark_part.rc 2014-11-24 00:37:06.000000000 +0100 @@ -1,5 +1,5 @@ <!DOCTYPE kpartgui> -<kpartgui name="ark_part" version="1"> +<kpartgui name="ark_part" version="2"> <MenuBar> <Menu name="file"> <text>&File</text> @@ -12,6 +12,7 @@ <Action name="delete"/> <Action name="extract"/> <Action name="preview"/> + <Action name="openwith"/> </Menu> <Menu name="settings"> <text>&Settings</text> @@ -25,4 +26,10 @@ <Action name="extract"/> <Action name="preview"/> </ToolBar> +<Menu name="context_menu"> + <Action name="delete"/> + <Action name="extract"/> + <Action name="preview"/> + <Action name="openwith"/> +</Menu> </kpartgui> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ark-4.14.3/part/part.cpp new/ark-14.12.0/part/part.cpp --- old/ark-4.14.3/part/part.cpp 2014-10-25 14:53:24.000000000 +0200 +++ new/ark-14.12.0/part/part.cpp 2014-11-24 00:37:06.000000000 +0100 @@ -45,6 +45,7 @@ #include <KIO/NetAccess> #include <KIcon> #include <KInputDialog> +#include <KMenu> #include <KMessageBox> #include <KPluginFactory> #include <KRun> @@ -138,7 +139,7 @@ Part::~Part() { - factory()->removeClient(this); + qDeleteAll(m_previewDirList); saveSplitterSizes(); @@ -213,6 +214,8 @@ void Part::setupView() { + m_view->setContextMenuPolicy(Qt::CustomContextMenu); + m_view->setModel(m_model); m_view->setSortingEnabled(true); @@ -223,8 +226,10 @@ this, SLOT(selectionChanged())); //TODO: fix an actual eventhandler - connect(m_view, SIGNAL(itemTriggered(QModelIndex)), - this, SLOT(slotPreview(QModelIndex))); + connect(m_view, SIGNAL(activated(const QModelIndex &)), + this, SLOT(slotPreviewWithInternalViewer())); + + connect(m_view, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotShowContextMenu())); connect(m_model, SIGNAL(columnsInserted(QModelIndex,int,int)), this, SLOT(adjustColumns())); @@ -240,13 +245,19 @@ m_saveAsAction = KStandardAction::saveAs(this, SLOT(slotSaveAs()), actionCollection()); + m_previewChooseAppAction = actionCollection()->addAction(QLatin1String("openwith")); + m_previewChooseAppAction->setText(i18nc("open a file with external program", "Open &With...")); + m_previewChooseAppAction->setIcon(KIcon(QLatin1String("document-open"))); + m_previewChooseAppAction->setStatusTip(i18n("Click to open the selected file with an external program")); + connect(m_previewChooseAppAction, SIGNAL(triggered(bool)), this, SLOT(slotPreviewWithExternalProgram())); + m_previewAction = actionCollection()->addAction(QLatin1String( "preview" )); m_previewAction->setText(i18nc("to preview a file inside an archive", "Pre&view")); m_previewAction->setIcon(KIcon( QLatin1String( "document-preview-archive" ))); m_previewAction->setStatusTip(i18n("Click to preview the selected file")); m_previewAction->setShortcuts(QList<QKeySequence>() << Qt::Key_Return << Qt::Key_Space); connect(m_previewAction, SIGNAL(triggered(bool)), - this, SLOT(slotPreview())); + this, SLOT(slotPreviewWithInternalViewer())); m_extractFilesAction = actionCollection()->addAction(QLatin1String( "extract" )); m_extractFilesAction->setText(i18n("E&xtract")); @@ -292,6 +303,8 @@ m_addDirAction->setEnabled(!isBusy() && isWritable); m_deleteFilesAction->setEnabled(!isBusy() && (m_view->selectionModel()->selectedRows().count() > 0) && isWritable); + m_previewChooseAppAction->setEnabled(!isBusy() && (m_view->selectionModel()->selectedRows().count() > 0) + && isWritable); QMenu *menu = m_extractFilesAction->menu(); if (!menu) { @@ -537,12 +550,17 @@ emit setWindowCaption(prettyName); } -void Part::slotPreview() +void Part::slotPreviewWithInternalViewer() { - slotPreview(m_view->selectionModel()->currentIndex()); + preview(m_view->selectionModel()->currentIndex(), InternalViewer); } -void Part::slotPreview(const QModelIndex & index) +void Part::slotPreviewWithExternalProgram() +{ + preview(m_view->selectionModel()->currentIndex(), ExternalProgram); +} + +void Part::preview(const QModelIndex &index, PreviewMode mode) { if (!isPreviewable(index)) { return; @@ -554,7 +572,10 @@ Kerfuffle::ExtractionOptions options; options[QLatin1String( "PreservePaths" )] = true; - ExtractJob *job = m_model->extractFile(entry[ InternalID ], m_previewDir.name(), options); + m_previewDirList.append(new KTempDir); + m_previewMode = mode; + ExtractJob *job = m_model->extractFile(entry[InternalID], m_previewDirList.last()->name(), options); + registerJob(job); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotPreviewExtracted(KJob*))); @@ -571,15 +592,28 @@ const ArchiveEntry& entry = m_model->entryForIndex(m_view->selectionModel()->currentIndex()); - QString fullName = - m_previewDir.name() + QLatin1Char('/') + entry[FileName].toString(); + ExtractJob *extractJob = qobject_cast<ExtractJob*>(job); + Q_ASSERT(extractJob); + QString fullName = extractJob->destinationDirectory() + entry[FileName].toString(); // Make sure a maliciously crafted archive with parent folders named ".." do // not cause the previewed file path to be located outside the temporary // directory, resulting in a directory traversal issue. fullName.remove(QLatin1String("../")); - ArkViewer::view(fullName, widget()); + // TODO: get rid of m_previewMode by extending ExtractJob with a PreviewJob. + // This would prevent race conditions if we ever stop disabling + // the whole UI while extracting a file to preview it. + switch (m_previewMode) { + case InternalViewer: + ArkViewer::view(fullName, widget()); + break; + case ExternalProgram: + KUrl::List list; + list.append(KUrl(fullName)); + KRun::displayOpenWithDialog(list, widget(), true); + break; + } } else { KMessageBox::error(widget(), job->errorString()); } @@ -721,7 +755,6 @@ } if (ArkSettings::openDestinationFolderAfterExtraction()) { - KUrl destinationDirectory(extractJob->destinationDirectory()); destinationDirectory.cleanPath(); @@ -913,4 +946,10 @@ } } +void Part::slotShowContextMenu() +{ + KMenu *popup = static_cast<KMenu *>(factory()->container(QLatin1String("context_menu"), this)); + popup->popup(QCursor::pos()); +} + } // namespace Ark diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ark-4.14.3/part/part.h new/ark-14.12.0/part/part.h --- old/ark-4.14.3/part/part.h 2014-10-25 14:53:24.000000000 +0200 +++ new/ark-14.12.0/part/part.h 2014-11-24 00:37:06.000000000 +0100 @@ -51,6 +51,11 @@ Q_OBJECT Q_INTERFACES(Interface) public: + enum PreviewMode { + InternalViewer, + ExternalProgram + }; + Part(QWidget *parentWidget, QObject *parent, const QVariantList &); ~Part(); static KAboutData* createAboutData(); @@ -66,8 +71,8 @@ private slots: void slotLoadingStarted(); void slotLoadingFinished(KJob *job); - void slotPreview(); - void slotPreview(const QModelIndex & index); + void slotPreviewWithInternalViewer(); + void slotPreviewWithExternalProgram(); void slotPreviewExtracted(KJob*); void slotError(const QString& errorMessage, const QString& details); void slotExtractFiles(); @@ -79,6 +84,7 @@ void slotAddFilesDone(KJob*); void slotDeleteFiles(); void slotDeleteFilesDone(KJob*); + void slotShowContextMenu(); void saveSplitterSizes(); void slotToggleInfoPanel(bool); void slotSaveAs(); @@ -103,9 +109,11 @@ QList<QVariant> selectedFiles(); QList<QVariant> selectedFilesWithChildren(); void registerJob(KJob *job); + void preview(const QModelIndex &index, PreviewMode mode); ArchiveModel *m_model; QTreeView *m_view; + KAction *m_previewChooseAppAction; KAction *m_previewAction; KAction *m_extractFilesAction; KAction *m_addFilesAction; @@ -114,8 +122,9 @@ KAction *m_saveAsAction; InfoPanel *m_infoPanel; QSplitter *m_splitter; - KTempDir m_previewDir; + QList<KTempDir*> m_previewDirList; bool m_busy; + PreviewMode m_previewMode; KAbstractWidgetJobTracker *m_jobTracker; KParts::StatusBarExtension *m_statusBarExtension; -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
