• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeutils API Reference
  • KDE Home
  • Contact Us
 

ark

  • sources
  • kde-4.14
  • kdeutils
  • ark
  • kerfuffle
queries.cpp
Go to the documentation of this file.
1 /*
2  * ark -- archiver for the KDE project
3  *
4  * Copyright (C) 2008-2009 Harald Hvaal <haraldhv@stud.ntnu.no>
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ( INCLUDING, BUT
21  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY
23  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF
25  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 #include "queries.h"
29 
30 #include <KLocale>
31 #include <KPasswordDialog>
32 #include <kdebug.h>
33 #include <kio/renamedialog.h>
34 
35 #include <QApplication>
36 #include <QWeakPointer>
37 
38 namespace Kerfuffle
39 {
40 Query::Query()
41 {
42  m_responseMutex.lock();
43 }
44 
45 QVariant Query::response()
46 {
47  return m_data.value(QLatin1String( "response" ));
48 }
49 
50 void Query::waitForResponse()
51 {
52  kDebug();
53 
54  //if there is no response set yet, wait
55  if (!m_data.contains(QLatin1String("response"))) {
56  m_responseCondition.wait(&m_responseMutex);
57  }
58  m_responseMutex.unlock();
59 }
60 
61 void Query::setResponse(QVariant response)
62 {
63  kDebug();
64 
65  m_data[QLatin1String( "response" )] = response;
66  m_responseCondition.wakeAll();
67 }
68 
69 OverwriteQuery::OverwriteQuery(const QString &filename) :
70  m_noRenameMode(false),
71  m_multiMode(true)
72 {
73  m_data[QLatin1String( "filename" )] = filename;
74 }
75 
76 void OverwriteQuery::execute()
77 {
78  // If we are being called from the KPart, the cursor is probably Qt::WaitCursor
79  // at the moment (#231974)
80  QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
81 
82  KIO::RenameDialog_Mode mode = (KIO::RenameDialog_Mode)(KIO::M_OVERWRITE | KIO::M_SKIP);
83  if (m_noRenameMode) {
84  mode = (KIO::RenameDialog_Mode)(mode | KIO::M_NORENAME);
85  }
86  if (m_multiMode) {
87  mode = (KIO::RenameDialog_Mode)(mode | KIO::M_MULTI);
88  }
89 
90  KUrl sourceUrl(m_data.value(QLatin1String( "filename" )).toString());
91  KUrl destUrl(m_data.value(QLatin1String( "filename" )).toString());
92  sourceUrl.cleanPath();
93  destUrl.cleanPath();
94 
95  QWeakPointer<KIO::RenameDialog> dialog = new KIO::RenameDialog(
96  NULL,
97  i18n("File already exists"),
98  sourceUrl,
99  destUrl,
100  mode);
101  dialog.data()->exec();
102 
103  m_data[QLatin1String("newFilename")] = dialog.data()->newDestUrl().pathOrUrl();
104 
105  setResponse(dialog.data()->result());
106 
107  delete dialog.data();
108 
109  QApplication::restoreOverrideCursor();
110 }
111 
112 bool OverwriteQuery::responseCancelled()
113 {
114  return m_data.value(QLatin1String( "response" )).toInt() == KIO::R_CANCEL;
115 }
116 bool OverwriteQuery::responseOverwriteAll()
117 {
118  return m_data.value(QLatin1String( "response" )).toInt() == KIO::R_OVERWRITE_ALL;
119 }
120 bool OverwriteQuery::responseOverwrite()
121 {
122  return m_data.value(QLatin1String( "response" )).toInt() == KIO::R_OVERWRITE;
123 }
124 
125 bool OverwriteQuery::responseRename()
126 {
127  return m_data.value(QLatin1String( "response" )).toInt() == KIO::R_RENAME;
128 }
129 
130 bool OverwriteQuery::responseSkip()
131 {
132  return m_data.value(QLatin1String( "response" )).toInt() == KIO::R_SKIP;
133 }
134 
135 bool OverwriteQuery::responseAutoSkip()
136 {
137  return m_data.value(QLatin1String( "response" )).toInt() == KIO::R_AUTO_SKIP;
138 }
139 
140 QString OverwriteQuery::newFilename()
141 {
142  return m_data.value(QLatin1String( "newFilename" )).toString();
143 }
144 
145 void OverwriteQuery::setNoRenameMode(bool enableNoRenameMode)
146 {
147  m_noRenameMode = enableNoRenameMode;
148 }
149 
150 bool OverwriteQuery::noRenameMode()
151 {
152  return m_noRenameMode;
153 }
154 
155 void OverwriteQuery::setMultiMode(bool enableMultiMode)
156 {
157  m_multiMode = enableMultiMode;
158 }
159 
160 bool OverwriteQuery::multiMode()
161 {
162  return m_multiMode;
163 }
164 
165 PasswordNeededQuery::PasswordNeededQuery(const QString& archiveFilename, bool incorrectTryAgain)
166 {
167  m_data[QLatin1String( "archiveFilename" )] = archiveFilename;
168  m_data[QLatin1String( "incorrectTryAgain" )] = incorrectTryAgain;
169 }
170 
171 void PasswordNeededQuery::execute()
172 {
173  // If we are being called from the KPart, the cursor is probably Qt::WaitCursor
174  // at the moment (#231974)
175  QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
176 
177  QWeakPointer<KPasswordDialog> dlg = new KPasswordDialog;
178  dlg.data()->setPrompt(i18nc("@info", "The archive <filename>%1</filename> is password protected. Please enter the password to extract the file.", m_data.value(QLatin1String( "archiveFilename" )).toString()));
179 
180  if (m_data.value(QLatin1String("incorrectTryAgain")).toBool()) {
181  dlg.data()->showErrorMessage(i18n("Incorrect password, please try again."), KPasswordDialog::PasswordError);
182  }
183 
184  const bool notCancelled = dlg.data()->exec();
185  const QString password = dlg.data()->password();
186 
187  m_data[QLatin1String("password")] = password;
188  setResponse(notCancelled && !password.isEmpty());
189 
190  QApplication::restoreOverrideCursor();
191 
192  delete dlg.data();
193 }
194 
195 QString PasswordNeededQuery::password()
196 {
197  return m_data.value(QLatin1String( "password" )).toString();
198 }
199 
200 bool PasswordNeededQuery::responseCancelled()
201 {
202  return !m_data.value(QLatin1String( "response" )).toBool();
203 }
204 }
Kerfuffle::Query::setResponse
void setResponse(QVariant response)
Definition: queries.cpp:61
Kerfuffle::OverwriteQuery::execute
void execute()
Execute the response.
Definition: queries.cpp:76
Kerfuffle::PasswordNeededQuery::password
QString password()
Definition: queries.cpp:195
Kerfuffle::OverwriteQuery::responseOverwriteAll
bool responseOverwriteAll()
Definition: queries.cpp:116
Kerfuffle::PasswordNeededQuery::execute
void execute()
Execute the response.
Definition: queries.cpp:171
QWeakPointer::data
T * data() const
QMutex::unlock
void unlock()
queries.h
Kerfuffle::PasswordNeededQuery::responseCancelled
bool responseCancelled()
Definition: queries.cpp:200
Kerfuffle::Query::m_data
QueryData m_data
Definition: queries.h:70
Kerfuffle::Query::waitForResponse
void waitForResponse()
Will block until the response have been set.
Definition: queries.cpp:50
Kerfuffle::OverwriteQuery::noRenameMode
bool noRenameMode()
Definition: queries.cpp:150
Kerfuffle::OverwriteQuery::setNoRenameMode
void setNoRenameMode(bool enableNoRenameMode)
Definition: queries.cpp:145
Kerfuffle::OverwriteQuery::responseCancelled
bool responseCancelled()
Definition: queries.cpp:112
QString::isEmpty
bool isEmpty() const
Kerfuffle::OverwriteQuery::OverwriteQuery
OverwriteQuery(const QString &filename)
Definition: queries.cpp:69
QApplication::setOverrideCursor
void setOverrideCursor(const QCursor &cursor)
QWaitCondition::wait
bool wait(QMutex *mutex, unsigned long time)
QApplication::restoreOverrideCursor
void restoreOverrideCursor()
Kerfuffle::OverwriteQuery::responseSkip
bool responseSkip()
Definition: queries.cpp:130
QString
Kerfuffle::OverwriteQuery::responseOverwrite
bool responseOverwrite()
Definition: queries.cpp:120
Kerfuffle::Query::response
QVariant response()
Definition: queries.cpp:45
Kerfuffle::Query::Query
Query()
Protected constructor.
Definition: queries.cpp:40
Kerfuffle::OverwriteQuery::newFilename
QString newFilename()
Definition: queries.cpp:140
Kerfuffle::PasswordNeededQuery::PasswordNeededQuery
PasswordNeededQuery(const QString &archiveFilename, bool incorrectTryAgain=false)
Definition: queries.cpp:165
QHash::value
const T value(const Key &key) const
QMutex::lock
void lock()
Kerfuffle::OverwriteQuery::multiMode
bool multiMode()
Definition: queries.cpp:160
QLatin1String
Kerfuffle::OverwriteQuery::setMultiMode
void setMultiMode(bool enableMultiMode)
Definition: queries.cpp:155
QWeakPointer
QHash::contains
bool contains(const Key &key) const
Kerfuffle::OverwriteQuery::responseRename
bool responseRename()
Definition: queries.cpp:125
QCursor
QWaitCondition::wakeAll
void wakeAll()
Kerfuffle::OverwriteQuery::responseAutoSkip
bool responseAutoSkip()
Definition: queries.cpp:135
QVariant
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:42:37 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

ark

Skip menu "ark"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdeutils API Reference

Skip menu "kdeutils API Reference"
  • ark
  • filelight
  • kcalc
  • kcharselect
  • kdf
  • kfloppy
  • kgpg
  • ktimer
  • kwallet
  • sweeper

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal