Hello community,
here is the log from the commit of package kdeutils4 for openSUSE:Factory
checked in at Wed Jun 8 17:31:05 CEST 2011.
--------
--- KDE/kdeutils4/kdeutils4.changes 2011-05-10 13:03:47.000000000 +0200
+++ /mounts/work_src_done/STABLE/kdeutils4/kdeutils4.changes 2011-06-03 15:38:54.000000000 +0200
@@ -1,0 +2,8 @@
+Fri Jun 3 15:38:53 CEST 2011 - dmueller@suse.de
+
+- update to 4.6.4
+ * Bugfixes over KDE 4.6.3
+ * see http://kde.org/announcements/changelogs/changelog4_6_3to4_6_4.php for details
+
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
4_5_BRANCH.diff
ark-use-libarchive-r1230916.diff
kdeutils-4.6.3.tar.bz2
New:
----
4_6_BRANCH.diff
kdeutils-4.6.4.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdeutils4.spec ++++++
--- /var/tmp/diff_new_pack.dpgr26/_old 2011-06-08 17:30:45.000000000 +0200
+++ /var/tmp/diff_new_pack.dpgr26/_new 2011-06-08 17:30:45.000000000 +0200
@@ -30,16 +30,15 @@
Group: Productivity/Other
Summary: Base Package of KDE Utility Programs
Url: http://www.kde.org
-Version: 4.6.3
+Version: 4.6.4
Release: 1
BuildRequires: gmp-devel kdebase4-workspace-devel >= %version libqimageblitz-devel net-snmp-devel pcsc-lite python-devel
BuildRequires: libkdepimlibs4-devel libkonq-devel libqca2-devel libzip-devel oxygen-icon-theme-large
BuildRequires: libarchive-devel libknotificationitem-devel libqjson-devel xz-devel
Source0: kdeutils-%version.tar.bz2
-Patch: 4_5_BRANCH.diff
+Patch: 4_6_BRANCH.diff
Patch1: desktop-files.diff
Patch2: kgpg-autostart.diff
-Patch3: ark-use-libarchive-r1230916.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%kde4_runtime_requires
Suggests: ark
@@ -74,7 +73,6 @@
%patch
%patch1
%patch2
-%patch3
%build
%cmake_kde4 -d build
++++++ 4_5_BRANCH.diff -> 4_6_BRANCH.diff ++++++
++++++ kdeutils-4.6.3.tar.bz2 -> kdeutils-4.6.4.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/CMakeLists.txt new/kdeutils-4.6.4/ark/CMakeLists.txt
--- old/kdeutils-4.6.3/ark/CMakeLists.txt 2011-01-18 22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/CMakeLists.txt 2011-06-02 12:04:31.000000000 +0200
@@ -1,5 +1,8 @@
project(ark)
+macro_optional_find_package(LibArchive)
+macro_log_feature(LIBARCHIVE_FOUND "LibArchive" "A library for dealing with a wide variety of archive file formats" "http://code.google.com/p/libarchive/" FALSE "" "Required for among others tar, tar.gz, tar.bz2 formats in Ark.")
+
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
add_subdirectory(part)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/app/batchextract.cpp new/kdeutils-4.6.4/ark/app/batchextract.cpp
--- old/kdeutils-4.6.3/ark/app/batchextract.cpp 2011-01-18 22:25:03.000000000 +0100
+++ new/kdeutils-4.6.4/ark/app/batchextract.cpp 2011-06-02 12:04:29.000000000 +0200
@@ -47,9 +47,10 @@
#include <QWeakPointer>
BatchExtract::BatchExtract()
- : m_autoSubfolder(false),
- m_preservePaths(true),
- m_openDestinationAfterExtraction(false)
+ : KCompositeJob(0),
+ m_autoSubfolder(false),
+ m_preservePaths(true),
+ m_openDestinationAfterExtraction(false)
{
setCapabilities(KJob::Killable);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/CMakeLists.txt new/kdeutils-4.6.4/ark/kerfuffle/CMakeLists.txt
--- old/kdeutils-4.6.3/ark/kerfuffle/CMakeLists.txt 2011-01-18 22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/CMakeLists.txt 2011-06-02 12:04:31.000000000 +0200
@@ -27,6 +27,9 @@
kde4_add_library(kerfuffle SHARED ${kerfuffle_SRCS})
target_link_libraries(kerfuffle ${KDE4_KFILE_LIBS} ${KDE4_KPARTS_LIBS})
+if (NOT WIN32)
+ target_link_libraries(kerfuffle ${KDE4_KPTY_LIBS})
+endif (NOT WIN32)
set_target_properties(kerfuffle PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/adddialog.cpp new/kdeutils-4.6.4/ark/kerfuffle/adddialog.cpp
--- old/kdeutils-4.6.3/ark/kerfuffle/adddialog.cpp 2011-01-18 22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/adddialog.cpp 2011-06-02 12:04:31.000000000 +0200
@@ -2,7 +2,7 @@
* ark -- archiver for the KDE project
*
* Copyright (C) 2008 Harald Hvaal
- * Copyright (C) 2009 Raphael Kubo da Costa
+ * Copyright (C) 2009,2011 Raphael Kubo da Costa
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -58,6 +58,7 @@
{
setOperationMode(KFileDialog::Saving);
setMode(KFile::File | KFile::LocalOnly);
+ setConfirmOverwrite(true);
setCaption(i18n("Compress to Archive"));
loadConfiguration();
@@ -71,7 +72,11 @@
// Set up a default name if there's only one file to compress
if (itemsToAdd.size() == 1) {
- setSelection(QFileInfo(itemsToAdd.first()).baseName());
+ // #272914: Add an extension when it is present, otherwise KFileDialog
+ // will not automatically add it as baseFileName is a file which
+ // already exists.
+ const QString baseFileName = QFileInfo(itemsToAdd.first()).baseName();
+ setSelection(baseFileName + currentFilterMimeType()->mainExtension());
}
//These extra options will be implemented in a 4.2+ version of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/archivebase.cpp new/kdeutils-4.6.4/ark/kerfuffle/archivebase.cpp
--- old/kdeutils-4.6.3/ark/kerfuffle/archivebase.cpp 2011-01-18 22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/archivebase.cpp 2011-06-02 12:04:31.000000000 +0200
@@ -156,6 +156,9 @@
if (!m_hasBeenListed) {
KJob *job = list();
+ connect(job, SIGNAL(userQuery(Kerfuffle::Query*)),
+ SLOT(onUserQuery(Kerfuffle::Query*)));
+
QEventLoop loop(this);
connect(job, SIGNAL(result(KJob*)),
@@ -165,6 +168,11 @@
}
}
+void ArchiveBase::onUserQuery(Query* query)
+{
+ query->execute();
+}
+
bool ArchiveBase::isSingleFolderArchive()
{
listIfNotListed();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/archivebase.h new/kdeutils-4.6.4/ark/kerfuffle/archivebase.h
--- old/kdeutils-4.6.3/ark/kerfuffle/archivebase.h 2011-01-18 22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/archivebase.h 2011-06-02 12:04:31.000000000 +0200
@@ -65,6 +65,7 @@
private slots:
void onListFinished(KJob*);
void onAddFinished(KJob*);
+ void onUserQuery(Kerfuffle::Query*);
private:
void listIfNotListed();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/cliinterface.cpp new/kdeutils-4.6.4/ark/kerfuffle/cliinterface.cpp
--- old/kdeutils-4.6.3/ark/kerfuffle/cliinterface.cpp 2011-01-18 22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/cliinterface.cpp 2011-06-02 12:04:31.000000000 +0200
@@ -28,7 +28,13 @@
#include "cliinterface.h"
#include "queries.h"
-#include <KProcess>
+#ifdef Q_OS_WIN
+# include <KProcess>
+#else
+# include <KPtyDevice>
+# include <KPtyProcess>
+#endif
+
#include <KStandardDirs>
#include <KDebug>
#include <KLocale>
@@ -38,6 +44,7 @@
#include <QDir>
#include <QEventLoop>
#include <QFile>
+#include <QProcess>
#include <QThread>
#include <QTimer>
@@ -49,6 +56,10 @@
{
//because this interface uses the event loop
setWaitForFinishedSignal(true);
+
+ if (QMetaType::type("QProcess::ExitStatus") == 0) {
+ qRegisterMetaTypeQProcess::ExitStatus("QProcess::ExitStatus");
+ }
}
void CliInterface::cacheParameterList()
@@ -63,8 +74,7 @@
CliInterface::~CliInterface()
{
- delete m_process;
- m_process = 0;
+ Q_ASSERT(!m_process);
}
bool CliInterface::list()
@@ -72,15 +82,13 @@
cacheParameterList();
m_operationMode = List;
- if (!findProgramAndCreateProcess(m_param.value(ListProgram).toString())) {
- failOperation();
- return false;
- }
-
QStringList args = m_param.value(ListArgs).toStringList();
substituteListVariables(args);
- executeProcess(m_program, args);
+ if (!runProcess(m_param.value(ListProgram).toString(), args)) {
+ failOperation();
+ return false;
+ }
return true;
}
@@ -92,11 +100,6 @@
m_operationMode = Copy;
- if (!findProgramAndCreateProcess(m_param.value(ExtractProgram).toString())) {
- failOperation();
- return false;
- }
-
//start preparing the argument list
QStringList args = m_param.value(ExtractArgs).toStringList();
@@ -221,7 +224,10 @@
kDebug() << "Setting current dir to " << destinationDirectory;
QDir::setCurrent(destinationDirectory);
- executeProcess(m_program, args);
+ if (!runProcess(m_param.value(ExtractProgram).toString(), args)) {
+ failOperation();
+ return false;
+ }
return true;
}
@@ -232,11 +238,6 @@
m_operationMode = Add;
- if (!findProgramAndCreateProcess(m_param.value(AddProgram).toString())) {
- failOperation();
- return false;
- }
-
const QString globalWorkDir = options.value(QLatin1String( "GlobalWorkDir" )).toString();
const QDir workDir = globalWorkDir.isEmpty() ? QDir::current() : QDir(globalWorkDir);
if (!globalWorkDir.isEmpty()) {
@@ -273,7 +274,10 @@
}
}
- executeProcess(m_program, args);
+ if (!runProcess(m_param.value(AddProgram).toString(), args)) {
+ failOperation();
+ return false;
+ }
return true;
}
@@ -283,11 +287,6 @@
cacheParameterList();
m_operationMode = Delete;
- if (!findProgramAndCreateProcess(m_param.value(DeleteProgram).toString())) {
- failOperation();
- return false;
- }
-
//start preparing the argument list
QStringList args = m_param.value(DeleteArgs).toStringList();
@@ -310,47 +309,57 @@
m_removedFiles = files;
- executeProcess(m_program, args);
+ if (!runProcess(m_param.value(DeleteProgram).toString(), args)) {
+ failOperation();
+ return false;
+ }
return true;
}
-bool CliInterface::createProcess()
+bool CliInterface::runProcess(const QString& programName, const QStringList& arguments)
{
- kDebug();
-
- if (m_process) {
- delete m_process;
- m_process = 0;
+ const QString programPath(KStandardDirs::findExe(programName));
+ if (programPath.isEmpty()) {
+ error(i18nc("@info", "Failed to locate program <filename>%1</filename> in PATH.", programName));
+ return false;
}
- m_stdOutData.clear();
+ Q_ASSERT(!m_process);
+
+ kDebug() << "Executing" << programPath << arguments;
+#ifdef Q_OS_WIN
m_process = new KProcess();
+#else
+ m_process = new KPtyProcess();
+ m_process->setPtyChannels(KPtyProcess::StdinChannel);
+#endif
+
m_process->setTextModeEnabled(true);
m_process->setOutputChannelMode(KProcess::MergedChannels);
-
- if (QMetaType::type("QProcess::ExitStatus") == 0) {
- qRegisterMetaTypeQProcess::ExitStatus("QProcess::ExitStatus");
- }
+ m_process->setNextOpenMode(QIODevice::ReadWrite | QIODevice::Unbuffered);
+ m_process->setProgram(programPath, arguments);
connect(m_process, SIGNAL(started()), SLOT(started()), Qt::DirectConnection);
connect(m_process, SIGNAL(readyReadStandardOutput()), SLOT(readStdout()), Qt::DirectConnection);
connect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(processFinished(int, QProcess::ExitStatus)), Qt::DirectConnection);
- return true;
-}
-
-bool CliInterface::executeProcess(const QString& path, const QStringList & args)
-{
- kDebug() << "Executing " << path << args;
- Q_ASSERT(!path.isEmpty());
+ m_stdOutData.clear();
- m_process->setProgram(path, args);
- m_process->setNextOpenMode(QIODevice::ReadWrite | QIODevice::Unbuffered);
m_process->start();
- return true;
+#ifdef Q_OS_WIN
+ bool ret = m_process->waitForFinished(-1);
+#else
+ QEventLoop loop;
+ bool ret = (loop.exec(QEventLoop::WaitForMoreEvents | QEventLoop::ExcludeUserInputEvents) == 0);
+#endif
+
+ delete m_process;
+ m_process = 0;
+
+ return ret;
}
void CliInterface::started()
@@ -435,6 +444,7 @@
bool foundErrorMessage =
(checkForErrorMessage(QLatin1String( lines.last() ), WrongPasswordPatterns) ||
checkForErrorMessage(QLatin1String( lines.last() ), ExtractionFailedPatterns) ||
+ checkForPasswordPromptMessage(QLatin1String(lines.last())) ||
checkForFileExistsMessage(QLatin1String( lines.last() )));
if (foundErrorMessage) {
@@ -482,7 +492,6 @@
if (checkForErrorMessage(line, WrongPasswordPatterns)) {
kDebug() << "Wrong password!";
error(i18n("Incorrect password."));
- setPassword(QString());
failOperation();
return;
}
@@ -500,10 +509,29 @@
}
if (m_operationMode == List) {
+ if (checkForPasswordPromptMessage(line)) {
+ kDebug() << "Found a password prompt";
+
+ Kerfuffle::PasswordNeededQuery query(filename());
+ userQuery(&query);
+ query.waitForResponse();
+
+ if (query.responseCancelled()) {
+ failOperation();
+ return;
+ }
+
+ setPassword(query.password());
+
+ const QString response(password() + QLatin1Char('\n'));
+ writeToProcess(response.toLocal8Bit());
+
+ return;
+ }
+
if (checkForErrorMessage(line, WrongPasswordPatterns)) {
kDebug() << "Wrong password!";
error(i18n("Incorrect password."));
- setPassword(QString());
failOperation();
return;
}
@@ -524,21 +552,22 @@
}
}
-bool CliInterface::findProgramAndCreateProcess(const QString& program)
+bool CliInterface::checkForPasswordPromptMessage(const QString& line)
{
- m_program = KStandardDirs::findExe(program);
+ const QString passwordPromptPattern(m_param.value(PasswordPromptPattern).toString());
- if (m_program.isEmpty()) {
- error(i18nc("@info", "Failed to locate program <filename>%1</filename> in PATH.", program));
+ if (passwordPromptPattern.isEmpty())
return false;
+
+ if (m_passwordPromptPattern.isEmpty()) {
+ m_passwordPromptPattern.setPattern(m_param.value(PasswordPromptPattern).toString());
}
- if (!createProcess()) {
- error(i18nc("@info", "Found program <filename>%1</filename>, but failed to initialize the process.", program));
- return false;
+ if (m_passwordPromptPattern.indexIn(line) != -1) {
+ return true;
}
- return true;
+ return false;
}
bool CliInterface::checkForFileExistsMessage(const QString& line)
@@ -589,9 +618,7 @@
responseToProcess += QLatin1Char( '\n' );
- kDebug() << "Writing " << responseToProcess;
-
- m_process->write(responseToProcess.toLocal8Bit());
+ writeToProcess(responseToProcess.toLocal8Bit());
return true;
}
@@ -625,14 +652,11 @@
bool CliInterface::doKill()
{
if (m_process) {
- m_process->terminate();
-
- if (!m_process->waitForFinished()) {
+ // Give some time for the application to finish gracefully
+ if (!m_process->waitForFinished(5)) {
m_process->kill();
}
- m_process->waitForFinished();
-
return true;
}
@@ -660,32 +684,23 @@
}
}
-QString CliInterface::escapedCharacters()
-{
- return m_escapedCharacters;
-}
-
-void CliInterface::setEscapedCharacters(const QString& characters)
+QString CliInterface::escapeFileName(const QString& fileName) const
{
- m_escapedCharacters = characters;
+ return fileName;
}
-QString CliInterface::escapeFileName(const QString& fileName)
+void CliInterface::writeToProcess(const QByteArray& data)
{
- QString quoted;
- const int len = fileName.length();
- const QLatin1Char backslash('\\');
- quoted.reserve(len * 2);
-
- for (int i = 0; i < len; ++i) {
- if (m_escapedCharacters.contains(fileName.at(i))) {
- quoted.append(backslash);
- }
+ Q_ASSERT(m_process);
+ Q_ASSERT(!data.isNull());
- quoted.append(fileName.at(i));
- }
+ kDebug() << "Writing" << data << "to the process";
- return quoted;
+#ifdef Q_OS_WIN
+ m_process->write(data);
+#else
+ m_process->pty()->write(data);
+#endif
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/cliinterface.h new/kdeutils-4.6.4/ark/kerfuffle/cliinterface.h
--- old/kdeutils-4.6.3/ark/kerfuffle/cliinterface.h 2011-01-18 22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/cliinterface.h 2011-06-02 12:04:31.000000000 +0200
@@ -33,6 +33,7 @@
#include
class KProcess;
+class KPtyProcess;
namespace Kerfuffle
{
@@ -48,6 +49,13 @@
*/
CaptureProgress = 0,
+ /**
+ * QString
+ * Default: empty
+ * A regexp pattern that matches the program's password prompt.
+ */
+ PasswordPromptPattern,
+
///////////////[ LIST ]/////////////
/**
@@ -255,12 +263,24 @@
void setEscapedCharacters(const QString& characters);
private:
- bool findProgramAndCreateProcess(const QString& program);
void substituteListVariables(QStringList& params);
- bool createProcess();
- bool executeProcess(const QString& path, const QStringList & args);
void cacheParameterList();
+
+ /**
+ * Checks whether a line of the program's output is a password prompt.
+ *
+ * It uses the regular expression in the @c PasswordPromptPattern parameter
+ * for the check.
+ *
+ * @param line A line of the program's output.
+ *
+ * @return @c true if the given @p line is a password prompt, @c false
+ * otherwise.
+ */
+
+ bool checkForPasswordPromptMessage(const QString& line);
+
bool checkForFileExistsMessage(const QString& line);
bool handleFileExistsMessage(const QString& filename);
bool checkForErrorMessage(const QString& line, int parameterIndex);
@@ -269,24 +289,47 @@
void failOperation();
/**
- * Precedes the characters returned by escapedCharacters() with a
- * backslash in @p fileName.
+ * Run @p programName with the given @p arguments.
+ * The method waits until @p programName is finished to exit.
+ *
+ * @param programName The program that will be run (not the whole path).
+ * @param arguments A list of arguments that will be passed to the program.
+ *
+ * @return @c true if the program was found and the process ran correctly,
+ * @c false otherwise.
+ */
+ bool runProcess(const QString& programName, const QStringList& arguments);
+
+ /**
+ * Performs any additional escaping and processing on @p fileName
+ * before passing it to the underlying process.
+ *
+ * The default implementation returns @p fileName unchanged.
*
* @param fileName String to escape.
*/
- QString escapeFileName(const QString& fileName);
+ virtual QString escapeFileName(const QString &fileName) const;
+
+ /**
+ * Wrapper around KProcess::write() or KPtyDevice::write(), depending on
+ * the platform.
+ */
+ void writeToProcess(const QByteArray& data);
QByteArray m_stdOutData;
bool m_userCancelled;
QRegExp m_existsPattern;
+ QRegExp m_passwordPromptPattern;
+#ifdef Q_OS_WIN
KProcess *m_process;
- QString m_program;
+#else
+ KPtyProcess *m_process;
+#endif
+
ParameterList m_param;
QVariantList m_removedFiles;
- QString m_escapedCharacters;
-
private slots:
void started();
void readStdout(bool handleAll = false);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/part/archivemodel.cpp new/kdeutils-4.6.4/ark/part/archivemodel.cpp
--- old/kdeutils-4.6.3/ark/part/archivemodel.cpp 2011-01-18 22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/part/archivemodel.cpp 2011-06-02 12:04:31.000000000 +0200
@@ -60,8 +60,10 @@
static bool compareAscending(const QPair &a, const QPair &b) {
// #234373: sort folders before files
- if (a.first->isDir() != b.first->isDir()) {
- return a.first->isDir();
+ if ((a.first->isDir()) && (!b.first->isDir())) {
+ return true;
+ } else if ((!a.first->isDir()) && (b.first->isDir())) {
+ return false;
}
if (currentSortColumn == FileName) {
@@ -76,8 +78,10 @@
static bool compareDescending(const QPair &a, const QPair &b) {
// #234373: sort folders before files
- if (a.first->isDir() != b.first->isDir()) {
- return !(a.first->isDir());
+ if ((a.first->isDir()) && (!b.first->isDir())) {
+ return true;
+ } else if ((!a.first->isDir()) && (b.first->isDir())) {
+ return false;
}
if (currentSortColumn == FileName) {
@@ -435,9 +439,9 @@
}
if (order == Qt::AscendingOrder) {
- qSort(sorting.begin(), sorting.end(), ArchiveNode::compareAscending);
+ qStableSort(sorting.begin(), sorting.end(), ArchiveNode::compareAscending);
} else {
- qSort(sorting.begin(), sorting.end(), ArchiveNode::compareDescending);
+ qStableSort(sorting.begin(), sorting.end(), ArchiveNode::compareDescending);
}
QModelIndexList fromIndexes;
@@ -480,28 +484,15 @@
QMimeData * ArchiveModel::mimeData(const QModelIndexList & indexes) const
{
kDebug();
- //prepare the fallback kio_slave filenames
QStringList files;
- bool noFallback = false;
QString archiveName = m_archive->fileName();
- QString ext = QFileInfo(archiveName).suffix().toUpper();
- if (ext == QLatin1String( "TAR" )) {
- archiveName.prepend(QLatin1String( "tar:" ));
- } else if (ext == QLatin1String( "ZIP" )) {
- archiveName.prepend(QLatin1String( "zip:" ));
- } else if (archiveName.right(6).toUpper() == QLatin1String( "TAR.GZ" )) {
- archiveName.prepend(QLatin1String( "tar:" ));
- } else
- noFallback = true;
-
- if (!archiveName.endsWith(QLatin1Char( '/' ))) {
- archiveName.append(QLatin1Char( '/' ));
+ if (!archiveName.endsWith(QLatin1Char('/'))) {
+ archiveName.append(QLatin1Char('/'));
}
//Populate the internal list of files
foreach(const QModelIndex &index, indexes) {
-
//to limit only one index per row
if (index.column() != 0) {
continue;
@@ -511,18 +502,12 @@
files << file;
}
- KUrl::List kiolist(files);
-
//prepare the dbus-based drag/drop mimedata
QMimeData *data = new QMimeData();
- data->setData(QLatin1String( "application/x-kde-dndextract" ),
+ data->setData(QLatin1String("application/x-kde-dndextract"),
QDBusConnection::sessionBus().baseService().toUtf8()
);
-
- if (!noFallback) {
- kiolist.populateMimeData(data);
- }
return data;
}
@@ -568,16 +553,14 @@
// For a rationale, see bugs #194241 and #241967
QString ArchiveModel::cleanFileName(const QString& fileName)
{
- QString cleanName(fileName);
-
- if ((cleanName == QLatin1String("/")) ||
- (cleanName == QLatin1String("."))) { // "." is present in ISO files
- cleanName.clear();
- } else if (cleanName.startsWith(QLatin1String("./"))) {
- cleanName.remove(0, 2);
+ if ((fileName == QLatin1String("/")) ||
+ (fileName == QLatin1String("."))) { // "." is present in ISO files
+ return QString();
+ } else if (fileName.startsWith(QLatin1String("./"))) {
+ return fileName.mid(2);
}
- return cleanName;
+ return fileName;
}
ArchiveDirNode* ArchiveModel::parentFor(const ArchiveEntry& entry)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/part/part.cpp new/kdeutils-4.6.4/ark/part/part.cpp
--- old/kdeutils-4.6.3/ark/part/part.cpp 2011-02-25 22:47:49.000000000 +0100
+++ new/kdeutils-4.6.4/ark/part/part.cpp 2011-06-02 12:04:31.000000000 +0200
@@ -88,8 +88,11 @@
m_splitter = new QSplitter(Qt::Horizontal, parentWidget);
setWidget(m_splitter);
- m_view = new ArchiveView(m_splitter);
- m_infoPanel = new InfoPanel(m_model, m_splitter);
+ m_view = new ArchiveView;
+ m_infoPanel = new InfoPanel(m_model);
+
+ m_splitter->addWidget(m_view);
+ m_splitter->addWidget(m_infoPanel);
QList<int> splitterSizes = ArkSettings::splitterSizes();
if (splitterSizes.isEmpty()) {
@@ -148,6 +151,9 @@
connect(job, SIGNAL(result(KJob*)), this, SIGNAL(ready()));
}
+// TODO: One should construct a KUrl out of localPath in order to be able to handle
+// non-local destinations (ie. trash:/ or a remote location)
+// See bugs #189322 and #204323.
void Part::extractSelectedFilesTo(const QString& localPath)
{
kDebug() << "Extract to " << localPath;
@@ -749,7 +755,20 @@
void Part::slotAddFiles()
{
kDebug();
- const QStringList filesToAdd = KFileDialog::getOpenFileNames(KUrl("kfiledialog:///ArkAddFiles"), QString(), widget(), i18nc("@title:window", "Add Files"));
+
+ // #264819: passing widget() as the parent will not work as expected.
+ // KFileDialog will create a KFileWidget, which runs an internal
+ // event loop to stat the given directory. This, in turn, leads to
+ // events being delivered to widget(), which is a QSplitter, which
+ // in turn reimplements childEvent() and will end up calling
+ // QWidget::show() on the KFileDialog (thus showing it in a
+ // non-modal state).
+ // When KFileDialog::exec() is called, the widget is already shown
+ // and nothing happens.
+ const QStringList filesToAdd =
+ KFileDialog::getOpenFileNames(KUrl("kfiledialog:///ArkAddFiles"),
+ QString(), widget()->parentWidget(),
+ i18nc("@title:window", "Add Files"));
slotAddFiles(filesToAdd);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/plugins/CMakeLists.txt new/kdeutils-4.6.4/ark/plugins/CMakeLists.txt
--- old/kdeutils-4.6.3/ark/plugins/CMakeLists.txt 2011-01-18 22:25:03.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/CMakeLists.txt 2011-06-02 12:04:31.000000000 +0200
@@ -1,5 +1,3 @@
-macro_optional_find_package(LibArchive)
-
if (LIBARCHIVE_FOUND)
if( HAVE_LIBARCHIVE_READ_DISK_API )
if( NOT HAVE_LIBARCHIVE_LZMA_SUPPORT OR NOT HAVE_LIBARCHIVE_XZ_SUPPORT )
@@ -15,8 +13,6 @@
endif( HAVE_LIBARCHIVE_READ_DISK_API )
endif (LIBARCHIVE_FOUND)
-macro_log_feature(LIBARCHIVE_FOUND "LibArchive" "A library for dealing with a wide variety of archive file formats" "http://code.google.com/p/libarchive/" FALSE "" "Required for among others tar, tar.gz, tar.bz2 formats in Ark.")
-
add_subdirectory( clirarplugin )
add_subdirectory( cli7zplugin )
add_subdirectory( clizipplugin )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/plugins/cli7zplugin/cliplugin.cpp new/kdeutils-4.6.4/ark/plugins/cli7zplugin/cliplugin.cpp
--- old/kdeutils-4.6.3/ark/plugins/cli7zplugin/cliplugin.cpp 2011-01-18 22:25:03.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/cli7zplugin/cliplugin.cpp 2011-06-02 12:04:30.000000000 +0200
@@ -69,6 +69,8 @@
<< QLatin1String( "S" ) //autoskip
<< QLatin1String( "Q" ) //cancel
;
+
+ p[PasswordPromptPattern] = QLatin1String("Enter password \\(will not be echoed\\) :");
}
return p;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/plugins/clirarplugin/cliplugin.cpp new/kdeutils-4.6.4/ark/plugins/clirarplugin/cliplugin.cpp
--- old/kdeutils-4.6.3/ark/plugins/clirarplugin/cliplugin.cpp 2011-02-25 22:47:49.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/clirarplugin/cliplugin.cpp 2011-06-02 12:04:31.000000000 +0200
@@ -45,6 +45,18 @@
{
}
+// #272281: the proprietary unrar program does not like trailing '/'s
+// in directories passed to it when extracting only part of
+// the files in an archive.
+QString CliPlugin::escapeFileName(const QString &fileName) const
+{
+ if (fileName.endsWith(QLatin1Char('/'))) {
+ return fileName.left(fileName.length() - 1);
+ }
+
+ return fileName;
+}
+
ParameterList CliPlugin::parameterList() const
{
static ParameterList p;
@@ -78,6 +90,8 @@
p[AddArgs] = QStringList() << QLatin1String( "a" ) << QLatin1String( "$Archive" ) << QLatin1String( "$Files" );
+ p[PasswordPromptPattern] = QLatin1String("Enter password \\(will not be echoed\\) for");
+
p[WrongPasswordPatterns] = QStringList() << QLatin1String("password incorrect") << QLatin1String("wrong password");
p[ExtractionFailedPatterns] = QStringList() << QLatin1String( "CRC failed" ) << QLatin1String( "Cannot find volume" );
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/plugins/clirarplugin/cliplugin.h new/kdeutils-4.6.4/ark/plugins/clirarplugin/cliplugin.h
--- old/kdeutils-4.6.3/ark/plugins/clirarplugin/cliplugin.h 2011-01-18 22:25:03.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/clirarplugin/cliplugin.h 2011-06-02 12:04:31.000000000 +0200
@@ -34,6 +34,8 @@
virtual ~CliPlugin();
+ virtual QString escapeFileName(const QString &fileName) const;
+
virtual Kerfuffle::ParameterList parameterList() const;
virtual bool readListLine(const QString &line);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/plugins/clizipplugin/cliplugin.cpp new/kdeutils-4.6.4/ark/plugins/clizipplugin/cliplugin.cpp
--- old/kdeutils-4.6.3/ark/plugins/clizipplugin/cliplugin.cpp 2011-01-18 22:25:03.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/clizipplugin/cliplugin.cpp 2011-06-02 12:04:30.000000000 +0200
@@ -2,6 +2,7 @@
* ark -- archiver for the KDE project
*
* Copyright (C) 2009 Harald Hvaal
+ * Copyright (C) 2009-2011 Raphael Kubo da Costa
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -16,9 +17,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
*/
+#include "cliplugin.h"
#include "kerfuffle/cliinterface.h"
#include "kerfuffle/kerfuffle_export.h"
@@ -33,96 +34,106 @@
using namespace Kerfuffle;
-class CliPlugin: public CliInterface
+CliPlugin::CliPlugin(QObject *parent, const QVariantList & args)
+ : CliInterface(parent, args)
+ , m_status(Header)
{
-public:
- explicit CliPlugin(QObject *parent, const QVariantList & args)
- : CliInterface(parent, args),
- m_status(Header) {
- // #208091: infozip applies special meanings to some characters
- // see match.c in infozip's source code
- setEscapedCharacters(QLatin1String("[]*?^-\\!"));
- }
+}
- virtual ~CliPlugin() {
- }
-
- virtual ParameterList parameterList() const {
- static ParameterList p;
- if (p.isEmpty()) {
- p[CaptureProgress] = false;
- p[ListProgram] = QLatin1String( "zipinfo" );
- p[ExtractProgram] = QLatin1String( "unzip" );
- p[DeleteProgram] = p[AddProgram] = QLatin1String( "zip" );
-
- p[ListArgs] = QStringList() << QLatin1String( "-l" ) << QLatin1String( "-T" ) << QLatin1String( "$Archive" );
- p[ExtractArgs] = QStringList() << QLatin1String( "$PreservePathSwitch" ) << QLatin1String( "$PasswordSwitch" ) << QLatin1String( "$Archive" ) << QLatin1String( "$Files" );
- p[PreservePathSwitch] = QStringList() << QLatin1String( "" ) << QLatin1String( "-j" );
- p[PasswordSwitch] = QStringList() << QLatin1String( "-P$Password" );
-
- p[DeleteArgs] = QStringList() << QLatin1String( "-d" ) << QLatin1String( "$Archive" ) << QLatin1String( "$Files" );
-
- p[FileExistsExpression] = QLatin1String( "^replace (.+)\\?" );
- p[FileExistsInput] = QStringList()
- << QLatin1String( "y" ) //overwrite
- << QLatin1String( "n" ) //skip
- << QLatin1String( "A" ) //overwrite all
- << QLatin1String( "N" ) //autoskip
- << QLatin1String( "N" ) //cancel
- ;
+CliPlugin::~CliPlugin()
+{
+}
- p[AddArgs] = QStringList() << QLatin1String( "-r" ) << QLatin1String( "$Archive" ) << QLatin1String( "$Files" );
+// #208091: infozip applies special meanings to some characters, so we
+// need to escape them with backslashes.see match.c in
+// infozip's source code
+QString CliPlugin::escapeFileName(const QString &fileName) const
+{
+ const QString escapedCharacters(QLatin1String("[]*?^-\\!"));
- p[WrongPasswordPatterns] = QStringList() << QLatin1String( "incorrect password" );
- //p[ExtractionFailedPatterns] = QStringList() << "CRC failed";
+ QString quoted;
+ const int len = fileName.length();
+ const QLatin1Char backslash('\\');
+ quoted.reserve(len * 2);
+
+ for (int i = 0; i < len; ++i) {
+ if (escapedCharacters.contains(fileName.at(i))) {
+ quoted.append(backslash);
}
- return p;
+
+ quoted.append(fileName.at(i));
}
- QString m_entryFilename, m_internalId;
- ArchiveEntry m_currentEntry;
+ return quoted;
+}
+
+ParameterList CliPlugin::parameterList() const
+{
+ static ParameterList p;
- enum ReadStatus {
- Header = 0,
- Entry
- };
-
- ReadStatus m_status;
-
- bool readListLine(const QString &line) {
- static QRegExp entryPattern(QLatin1String(
- "^(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\d{8}).(\\d{6})\\s+(.+)$") );
-
- int i;
- switch (m_status) {
- case Header:
- m_status = Entry;
- break;
- case Entry:
- i = entryPattern.indexIn(line);
- if (i != -1) {
- ArchiveEntry e;
- e[Permissions] = entryPattern.cap(1);
- e[IsDirectory] = (entryPattern.cap(1).at(0) == QLatin1Char( 'd' ));
- e[Size] = entryPattern.cap(4).toInt();
- QString status = entryPattern.cap(5);
- if (status[0].isUpper()) {
- e[IsPasswordProtected] = true;
- }
- e[CompressedSize] = entryPattern.cap(6).toInt();
-
- const QDateTime ts(QDate::fromString(entryPattern.cap(8), QLatin1String( "yyyyMMdd" )),
- QTime::fromString(entryPattern.cap(9), QLatin1String( "hhmmss" )));
- e[Timestamp] = ts;
+ if (p.isEmpty()) {
+ p[CaptureProgress] = false;
+ p[ListProgram] = QLatin1String( "zipinfo" );
+ p[ExtractProgram] = QLatin1String( "unzip" );
+ p[DeleteProgram] = p[AddProgram] = QLatin1String( "zip" );
+
+ p[ListArgs] = QStringList() << QLatin1String( "-l" ) << QLatin1String( "-T" ) << QLatin1String( "$Archive" );
+ p[ExtractArgs] = QStringList() << QLatin1String( "$PreservePathSwitch" ) << QLatin1String( "$PasswordSwitch" ) << QLatin1String( "$Archive" ) << QLatin1String( "$Files" );
+ p[PreservePathSwitch] = QStringList() << QLatin1String( "" ) << QLatin1String( "-j" );
+ p[PasswordSwitch] = QStringList() << QLatin1String( "-P$Password" );
+
+ p[DeleteArgs] = QStringList() << QLatin1String( "-d" ) << QLatin1String( "$Archive" ) << QLatin1String( "$Files" );
+
+ p[FileExistsExpression] = QLatin1String( "^replace (.+)\\?" );
+ p[FileExistsInput] = QStringList()
+ << QLatin1String( "y" ) //overwrite
+ << QLatin1String( "n" ) //skip
+ << QLatin1String( "A" ) //overwrite all
+ << QLatin1String( "N" ) //autoskip
+ << QLatin1String( "N" ) //cancel
+ ;
- e[FileName] = e[InternalID] = entryPattern.cap(10);
- entry(e);
+ p[AddArgs] = QStringList() << QLatin1String( "-r" ) << QLatin1String( "$Archive" ) << QLatin1String( "$Files" );
+
+ p[WrongPasswordPatterns] = QStringList() << QLatin1String( "incorrect password" );
+ //p[ExtractionFailedPatterns] = QStringList() << "CRC failed";
+ }
+ return p;
+}
+
+bool CliPlugin::readListLine(const QString &line)
+{
+ static const QRegExp entryPattern(QLatin1String(
+ "^(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\d{8}).(\\d{6})\\s+(.+)$") );
+
+ switch (m_status) {
+ case Header:
+ m_status = Entry;
+ break;
+ case Entry:
+ if (entryPattern.indexIn(line) != -1) {
+ ArchiveEntry e;
+ e[Permissions] = entryPattern.cap(1);
+ e[IsDirectory] = (entryPattern.cap(1).at(0) == QLatin1Char( 'd' ));
+ e[Size] = entryPattern.cap(4).toInt();
+ QString status = entryPattern.cap(5);
+ if (status[0].isUpper()) {
+ e[IsPasswordProtected] = true;
}
- break;
+ e[CompressedSize] = entryPattern.cap(6).toInt();
+
+ const QDateTime ts(QDate::fromString(entryPattern.cap(8), QLatin1String( "yyyyMMdd" )),
+ QTime::fromString(entryPattern.cap(9), QLatin1String( "hhmmss" )));
+ e[Timestamp] = ts;
+
+ e[FileName] = e[InternalID] = entryPattern.cap(10);
+ entry(e);
}
- return true;
+ break;
}
-};
+
+ return true;
+}
KERFUFFLE_EXPORT_PLUGIN(CliPlugin)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/ark/plugins/clizipplugin/cliplugin.h new/kdeutils-4.6.4/ark/plugins/clizipplugin/cliplugin.h
--- old/kdeutils-4.6.3/ark/plugins/clizipplugin/cliplugin.h 1970-01-01 01:00:00.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/clizipplugin/cliplugin.h 2011-06-02 12:04:30.000000000 +0200
@@ -0,0 +1,47 @@
+/*
+ * ark -- archiver for the KDE project
+ *
+ * Copyright (C) 2011 Raphael Kubo da Costa
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef CLIPLUGIN_H
+#define CLIPLUGIN_H
+
+#include "kerfuffle/cliinterface.h"
+
+class CliPlugin : public Kerfuffle::CliInterface
+{
+ Q_OBJECT
+
+public:
+ explicit CliPlugin(QObject *parent, const QVariantList &args);
+ virtual ~CliPlugin();
+
+ virtual QString escapeFileName(const QString &fileName) const;
+
+ virtual Kerfuffle::ParameterList parameterList() const;
+
+ virtual bool readListLine(const QString &line);
+
+private:
+ enum {
+ Header = 0,
+ Entry
+ } m_status;
+};
+
+#endif // CLIPLUGIN_H
Files old/kdeutils-4.6.3/doc/ark/index.cache.bz2 and new/kdeutils-4.6.4/doc/ark/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/filelight/index.cache.bz2 and new/kdeutils-4.6.4/doc/filelight/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kcalc/index.cache.bz2 and new/kdeutils-4.6.4/doc/kcalc/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kcharselect/index.cache.bz2 and new/kdeutils-4.6.4/doc/kcharselect/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kcontrol/blockdevices/index.cache.bz2 and new/kdeutils-4.6.4/doc/kcontrol/blockdevices/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kcontrol/kremotecontrol/index.cache.bz2 and new/kdeutils-4.6.4/doc/kcontrol/kremotecontrol/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kdf/index.cache.bz2 and new/kdeutils-4.6.4/doc/kdf/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kfloppy/index.cache.bz2 and new/kdeutils-4.6.4/doc/kfloppy/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kgpg/index.cache.bz2 and new/kdeutils-4.6.4/doc/kgpg/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/ktimer/index.cache.bz2 and new/kdeutils-4.6.4/doc/ktimer/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kwallet/index.cache.bz2 and new/kdeutils-4.6.4/doc/kwallet/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/printer-applet/index.cache.bz2 and new/kdeutils-4.6.4/doc/printer-applet/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/sweeper/index.cache.bz2 and new/kdeutils-4.6.4/doc/sweeper/index.cache.bz2 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/filelight/misc/filelight.desktop new/kdeutils-4.6.4/filelight/misc/filelight.desktop
--- old/kdeutils-4.6.3/filelight/misc/filelight.desktop 2011-04-01 13:00:15.000000000 +0200
+++ new/kdeutils-4.6.4/filelight/misc/filelight.desktop 2011-06-02 12:04:28.000000000 +0200
@@ -12,6 +12,7 @@
Name[eu]=Filelight
Name[fi]=Filelight
Name[fr]=Filelight
+Name[hu]=Filelight
Name[it]=Filelight
Name[kk]=Filelight
Name[km]=Filelight
@@ -23,6 +24,7 @@
Name[pa]=ਫਾਇਲਲਾਈਟ
Name[pt]=Filelight
Name[pt_BR]=Filelight
+Name[ro]=Filelight
Name[ru]=Filelight
Name[sk]=Filelight
Name[sl]=Filelight
@@ -52,6 +54,7 @@
GenericName[eu]=Diskoen erabilerari buruzko estatistikak
GenericName[fi]=Levynkäyttötilastot
GenericName[fr]=Statistiques d'utilisation de disque
+GenericName[hu]=Lemezhasználati statisztika
GenericName[it]=Statistiche uso del disco
GenericName[kk]=Дискінің статистикасы
GenericName[km]=ស្ថិតិប្រើប្រាស់ថាស
@@ -63,6 +66,7 @@
GenericName[pa]=ਡਿਸਕ ਵਰਤੋਂ ਅੰਕੜੇ
GenericName[pt]=Estatísticas de Utilização do Disco
GenericName[pt_BR]=Estatísticas do uso do disco
+GenericName[ro]=Statistici utilizare disc
GenericName[ru]=Использование дисков
GenericName[sk]=Štatistiky využitia disku
GenericName[sl]=Statistika porabe diska
@@ -93,6 +97,7 @@
Comment[eu]=Erakutsi diskoen erabilerari buruzko informazioa
Comment[fi]=Näytä levynkäyttö
Comment[fr]=Afficher l'information d'utilisation de disque
+Comment[hu]=Lemezhasználati információk megjelenítése
Comment[it]=Mostra l'uso del disco
Comment[kk]=Дискідегі орынды көрсету
Comment[km]=មើលព័ត៌មានអំពីការប្រើប្រាស់ថាស
@@ -104,6 +109,7 @@
Comment[pa]=ਡਿਸਕ ਵਰਤੋਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਵੇਖੋ
Comment[pt]=Ver a informação de utilização do disco
Comment[pt_BR]=Exibe as informações de utilização do disco
+Comment[ro]=Vezi informații despre utilizarea discului
Comment[ru]=Наглядное представление файловой системы
Comment[sk]=Zobrazenie informácií o využití disku
Comment[sl]=Oglejte si statistiko porabe diska
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/filelight/misc/filelightpart.desktop new/kdeutils-4.6.4/filelight/misc/filelightpart.desktop
--- old/kdeutils-4.6.3/filelight/misc/filelightpart.desktop 2011-04-01 13:00:15.000000000 +0200
+++ new/kdeutils-4.6.4/filelight/misc/filelightpart.desktop 2011-06-02 12:04:28.000000000 +0200
@@ -22,6 +22,7 @@
Name[pa]=ਰੇਡੀਅਨ ਮੈਪ
Name[pt]=Mapa Radial
Name[pt_BR]=Mapa radial
+Name[ro]=Hartă radială
Name[ru]=Радиальная карта
Name[sk]=Radiálna mapa
Name[sl]=Krožen prikaz
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/kdeutils-version.h new/kdeutils-4.6.4/kdeutils-version.h
--- old/kdeutils-4.6.3/kdeutils-version.h 2011-04-01 13:00:16.000000000 +0200
+++ new/kdeutils-4.6.4/kdeutils-version.h 2011-06-02 12:04:31.000000000 +0200
@@ -58,6 +58,6 @@
3.2 alpha1
*/
-#define KDEUTILS_VERSION_STRING "4.6.2"
+#define KDEUTILS_VERSION_STRING "4.6.4"
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/Messages.sh new/kdeutils-4.6.4/kgpg/Messages.sh
--- old/kdeutils-4.6.3/kgpg/Messages.sh 2011-01-18 22:24:55.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/Messages.sh 2011-06-02 12:04:28.000000000 +0200
@@ -1,5 +1,5 @@
#! /bin/sh
$PREPARETIPS > tips.cpp
$EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` >> rc.cpp
-$XGETTEXT *.cpp core/*.cpp editor/*.cpp model/*.cpp transactions/*.cpp -o $podir/kgpg.pot
+$XGETTEXT *.h *.cpp core/*.cpp editor/*.cpp model/*.cpp transactions/*.cpp -o $podir/kgpg.pot
rm -f tips.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/editor/kgpgeditor.cpp new/kdeutils-4.6.4/kgpg/editor/kgpgeditor.cpp
--- old/kdeutils-4.6.3/kgpg/editor/kgpgeditor.cpp 2011-02-25 22:47:49.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/editor/kgpgeditor.cpp 2011-06-02 12:04:28.000000000 +0200
@@ -169,7 +169,7 @@
KStandardAction::find(this, SLOT(slotFind()), actionCollection());
KStandardAction::findNext(this, SLOT(slotFindNext()), actionCollection());
KStandardAction::findPrev(this, SLOT(slotFindPrev()), actionCollection());
- actionCollection()->addAction(KStandardAction::Preferences, QLatin1String( "kgpg_config" ),
+ actionCollection()->addAction(KStandardAction::Preferences, QLatin1String( "options_configure" ),
this, SLOT(slotOptions()));
m_editundo = KStandardAction::undo(this, SLOT(slotundo()), actionCollection());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/editor/kgpgeditor.rc new/kdeutils-4.6.4/kgpg/editor/kgpgeditor.rc
--- old/kdeutils-4.6.3/kgpg/editor/kgpgeditor.rc 2011-01-18 22:24:55.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/editor/kgpgeditor.rc 2011-06-02 12:04:28.000000000 +0200
@@ -20,11 +20,6 @@
<Action name="sign_verify"/>
<Action name="sign_check"/>
</Menu>
-
- <Menu name="settings">
- <text>&Settings</text>
- <Action name="kgpg_config" />
- </Menu>
</MenuBar>
<ToolBar name="gpgToolBar">
<Action name="text_sign_verify"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/keysmanager.cpp new/kdeutils-4.6.4/kgpg/keysmanager.cpp
--- old/kdeutils-4.6.3/kgpg/keysmanager.cpp 2011-02-25 22:47:49.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/keysmanager.cpp 2011-06-02 19:35:41.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2002 Jean-Baptiste Mardelle
- * Copyright (C) 2007,2008,2009,2010 Rolf Eike Beer
+ * Copyright (C) 2007,2008,2009,2010,2011 Rolf Eike Beer
*/
/***************************************************************************
@@ -159,11 +159,7 @@
if (showTipOfDay)
installEventFilter(this);
- KAction *action = 0;
-
- action = actionCollection()->addAction( QLatin1String( "default" ) );
- connect(action, SIGNAL(triggered(bool)), SLOT(slotDefaultAction()));
- action->setShortcut(QKeySequence(Qt::Key_Return));
+ KAction *action;
action = actionCollection()->addAction( QLatin1String( "help_tipofday" ));
action->setIcon( KIcon( QLatin1String( "help-hint" )) );
@@ -248,6 +244,7 @@
deleteKey->setIcon(KIcon( QLatin1String( "edit-delete" )));
connect(deleteKey, SIGNAL(triggered(bool)), SLOT(confirmdeletekey()));
deleteKey->setShortcut(QKeySequence(Qt::Key_Delete));
+ deleteKey->setEnabled(false);
setDefaultKey = actionCollection()->addAction(QLatin1String( "key_default" ));
setDefaultKey->setText(i18n("Set as De&fault Key"));
@@ -288,6 +285,7 @@
delSignKey = actionCollection()->addAction(QLatin1String( "key_delsign" ));
delSignKey->setIcon(KIcon( QLatin1String( "edit-delete" )));
connect(delSignKey, SIGNAL(triggered(bool)), SLOT(delsignkey()));
+ delSignKey->setEnabled(false);
importAllSignKeys = actionCollection()->addAction(QLatin1String( "key_importallsign" ));
importAllSignKeys->setIcon(KIcon( QLatin1String( "document-import" )));
@@ -361,6 +359,8 @@
iview->setContextMenuPolicy(Qt::CustomContextMenu);
connect(iview->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(checkList()));
+ connect (iview, SIGNAL(returnPressed()), SLOT(slotDefaultAction()));
+
int psize = KGpgSettings::photoProperties();
photoProps->setCurrentItem(psize);
slotSetPhotoSize(psize);
@@ -500,6 +500,7 @@
connect(m_netnote, SIGNAL(shouldDisconnect()), SLOT(slotNetworkDown()));
toggleNetworkActions(Solid::Networking::status() == Solid::Networking::Unknown || Solid::Networking::status() == Solid::Networking::Connected);
+ importSignatureKey->setEnabled(false);
QTimer::singleShot(0, this, SLOT(refreshkey()));
}
@@ -1337,6 +1338,9 @@
createGroup->setText(i18np("&Create Group with Selected Key...", "&Create Group with Selected Keys...", cnt));
signKey->setText(i18np("&Sign Key...", "&Sign Keys...", cnt));
delUid->setText(i18np("&Delete User ID", "&Delete User IDs", cnt));
+ delSignKey->setText(i18np("Delete Sign&ature", "Delete Sign&atures", cnt));
+ importSignatureKey->setText(i18np("Import Key From Keyserver", "Import Keys From Keyserver", cnt));
+ deleteKey->setText(i18np("&Delete Key", "&Delete Keys", cnt));
}
void
@@ -1383,9 +1387,7 @@
}
importSignatureKey->setEnabled(allunksig && m_online);
- importSignatureKey->setText(i18np("Import Key From Keyserver", "Import Keys From Keyserver", cnt));
delSignKey->setEnabled( (cnt == 1) );
- delSignKey->setText(i18np("Delete Sign&ature", "Delete Sign&atures", cnt));
m_popupsig->exec(globpos);
} else if (itype == ITYPE_UID) {
if (cnt == 1) {
@@ -1407,7 +1409,6 @@
} else if (!(itype & ~(ITYPE_PAIR | ITYPE_GROUP))) {
signKey->setEnabled(!(itype & ITYPE_GROUP));
deleteKey->setEnabled(!(itype & ITYPE_GROUP));
- deleteKey->setText(i18np("&Delete Key", "&Delete Keys", cnt));
setDefaultKey->setEnabled( (cnt == 1) );
m_popuppub->exec(globpos);
} else if (!(itype & ~(ITYPE_UID | ITYPE_PAIR | ITYPE_UAT))) {
@@ -2238,7 +2239,7 @@
QStringList idlist;
if (exportList.empty())
- return;
+ return;
foreach (const KGpgNode *nd, exportList)
idlist << nd->getId();
@@ -2286,7 +2287,8 @@
void KeysManager::delsignkey()
{
KGpgNode *nd = iview->selectedNode();
- Q_ASSERT(nd != NULL);
+ if (nd == NULL)
+ return;
QString uid;
QString parentKey;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/keytreeview.cpp new/kdeutils-4.6.4/kgpg/keytreeview.cpp
--- old/kdeutils-4.6.3/kgpg/keytreeview.cpp 2011-01-18 22:24:55.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/keytreeview.cpp 2011-06-02 19:35:41.000000000 +0200
@@ -210,4 +210,16 @@
resizeColumnToContents(i);
}
+void
+KeyTreeView::keyPressEvent(QKeyEvent *event)
+{
+ if (event->key() == Qt::Key_Return) {
+ if (!event->isAutoRepeat())
+ emit returnPressed();
+
+ return;
+ }
+ QTreeView::keyPressEvent(event);
+}
+
#include "keytreeview.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/keytreeview.h new/kdeutils-4.6.4/kgpg/keytreeview.h
--- old/kdeutils-4.6.3/kgpg/keytreeview.h 2011-01-18 22:24:55.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/keytreeview.h 2011-06-02 19:35:41.000000000 +0200
@@ -49,6 +49,7 @@
signals:
void importDrop(const KUrl::List &urls);
+ void returnPressed();
public slots:
void selectNode(KGpgNode *nd);
@@ -58,6 +59,7 @@
virtual void contentsDragMoveEvent(QDragMoveEvent *e);
virtual void contentsDropEvent(QDropEvent *e);
virtual void startDrag(Qt::DropActions);
+ virtual void keyPressEvent(QKeyEvent *event);
};
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/kgpg.h new/kdeutils-4.6.4/kgpg/kgpg.h
--- old/kdeutils-4.6.3/kgpg/kgpg.h 2011-01-18 22:24:55.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/kgpg.h 2011-06-02 12:04:28.000000000 +0200
@@ -21,12 +21,24 @@
#include <KUniqueApplication>
#include <KShortcut>
#include <KUrl>
+#include
class KCmdLineArgs;
class KeysManager;
class KGpgExternalActions;
class QString;
+static const char * const EMailTemplateText=I18N_NOOP(
+ "Hi,\n\nplease find attached the user id '%UIDNAME%' of your key %KEYID% signed by me. "
+ "This mail is encrypted with that key to make sure you control both the email address and the key.\n\n"
+ "If you have multiple user ids, I sent the signature for each user id separately to that user id's associated email address. "
+ "You can import the signatures by running each through `gpg --import` after you have decrypted them with `gpg --decrypt`.\n\n"
+ "If you are using KGpg store the attachment to disk and then import it. Just select `Import Key...` from `Keys` menu and open the file.\n\n"
+ "Note that I did not upload your key to any keyservers. If you want this new signature to be available to others, please upload it yourself. "
+ "With GnuPG this can be done using gpg --keyserver subkeys.pgp.net --send-key %KEYID%.\n\n"
+ "With KGpg you can right click on the key once you imported all user ids and choose `Export Public Key...`.\n\n"
+ "If you have any questions, don't hesitate to ask.\n");
+
class KGpgApp : public KUniqueApplication
{
Q_OBJECT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/kgpg.kcfg new/kdeutils-4.6.4/kgpg/kgpg.kcfg
--- old/kdeutils-4.6.3/kgpg/kgpg.kcfg 2011-01-18 22:24:55.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/kgpg.kcfg 2011-06-02 12:04:28.000000000 +0200
@@ -5,6 +5,7 @@
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
<include>kglobalsettings.h</include>
+ <include>kgpg.h</include>
<kcfgfile name="kgpgrc"/>
<group name="Decryption">
@@ -250,21 +251,7 @@
<group name="Key Signing">
<entry name="EmailTemplate" type="String" key="Email_Template">
<label>This is the text of the email sent by the "Sign and Mail User ID" action.</label>
- <default>Hi,
-
-please find attached the user id "%UIDNAME%" of your key %KEYID% signed by me. This mail is encrypted with that key to make sure you control both the email address and the key.
-
-If you have multiple user ids, I sent the signature for each user id separately to that user id's associated email address. You can import the signatures by running each through `gpg --import` after you have decrypted them with `gpg --decrypt`.
-
-If you are using KGpg store the attachment to disk and then import it. Just select `Import Key...` from `Keys` menu and open the file.
-
-Note that I did not upload your key to any keyservers. If you want this new signature to be available to others, please upload it yourself. With GnuPG this can be done using
- gpg --keyserver subkeys.pgp.net --send-key %KEYID%
-
-With KGpg you can right click on the key once you imported all user ids and choose `Export Public Key...`.
-
-If you have any questions, don't hesitate to ask.
-</default>
+ <default code="true">i18n(EMailTemplateText)</default>
</entry>
<entry name="MailUats" type="Enum" key="Mail_Uats">
<choices>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdeutils-4.6.3/printer-applet/printer-applet.notifyrc new/kdeutils-4.6.4/printer-applet/printer-applet.notifyrc
--- old/kdeutils-4.6.3/printer-applet/printer-applet.notifyrc 2011-01-18 22:24:59.000000000 +0100
+++ new/kdeutils-4.6.4/printer-applet/printer-applet.notifyrc 2011-06-02 12:04:28.000000000 +0200
@@ -159,7 +159,7 @@
Comment[ca@valencia]=S'està configurant la impressora nova
Comment[cs]=Probíhá nastavení nové tiskárny
Comment[da]=Indstilling af ny printer
-Comment[de]=Neuen Drucker einrichten
+Comment[de]=Neuer Drucker wird eingerichtet
Comment[el]=Ρύθμιση νέου εκτυπωτή
Comment[en_GB]=Configuring New Printer
Comment[es]=Configuración de la nueva impresora
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org