set(CMAKE_BLUEDEVIL_VERSION_MAJOR 2)
set(CMAKE_BLUEDEVIL_VERSION_MINOR 1)
-set(CMAKE_BLUEDEVIL_VERSION_PATCH 0)
+set(CMAKE_BLUEDEVIL_VERSION_PATCH 1)
set(CMAKE_BLUEDEVIL_VERSION_STRING "${CMAKE_BLUEDEVIL_VERSION_MAJOR}.${CMAKE_BLUEDEVIL_VERSION_MINOR}.${CMAKE_BLUEDEVIL_VERSION_PATCH}")
configure_file(version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.h)
<sub-class-of type="inode/directory"/>
<generic-icon name="video-display"/>
<comment>Known Device</comment>
+ <comment xml:lang="bs">Poznat uređaj</comment>
<comment xml:lang="ca">Dispositiu conegut</comment>
<comment xml:lang="cs">Známé zařízení</comment>
<comment xml:lang="da">Kendt enhed</comment>
<comment xml:lang="en_GB">Known Device</comment>
<comment xml:lang="es">Dispositivo conocido</comment>
<comment xml:lang="fi">Tunnettu laite</comment>
+ <comment xml:lang="fr">Périphérique connu</comment>
<comment xml:lang="it">Dispositivo conosciuto</comment>
<comment xml:lang="nl">Bekend apparaat</comment>
<comment xml:lang="pl">Znane urządzenie</comment>
<comment xml:lang="sr@ijekavian">познати уређај</comment>
<comment xml:lang="sr@ijekavianlatin">poznati uređaj</comment>
<comment xml:lang="sr@latin">poznati uređaj</comment>
+ <comment xml:lang="sv">Känd enhet</comment>
<comment xml:lang="uk">Відомий пристрій</comment>
+ <comment xml:lang="zh_TW">已知的裝置</comment>
</mime-type>
<mime-type type="inode/vnd.kde.bluedevil.device.discovered">
<sub-class-of type="inode/vnd.kde.bluedevil.device"/>
<generic-icon name="video-display"/>
<comment>Discovered Device</comment>
+ <comment xml:lang="bs">Otkriven uređaj</comment>
<comment xml:lang="ca">Dispositiu descobert</comment>
<comment xml:lang="cs">Objevené zařízení</comment>
<comment xml:lang="da">Opdaget enhed</comment>
<comment xml:lang="en_GB">Discovered Device</comment>
<comment xml:lang="es">Dispositivo descubierto</comment>
<comment xml:lang="fi">Löydetty palvelu</comment>
+ <comment xml:lang="fr">Périphérique découvert</comment>
<comment xml:lang="it">Dispositivo scoperto</comment>
<comment xml:lang="nl">Gevonden apparaat</comment>
<comment xml:lang="pl">Odkryte urządzenie</comment>
<comment xml:lang="sr@ijekavian">откривени уређај</comment>
<comment xml:lang="sr@ijekavianlatin">otkriveni uređaj</comment>
<comment xml:lang="sr@latin">otkriveni uređaj</comment>
+ <comment xml:lang="sv">Upptäckt enhet</comment>
<comment xml:lang="uk">Виявлений пристрій</comment>
+ <comment xml:lang="zh_TW">已發現的裝置</comment>
</mime-type>
<mime-type type="inode/vnd.kde.bluedevil.service">
<sub-class-of type="inode/directory"/>
<generic-icon name="preferences-system-bluetooth"/>
<comment>Service</comment>
+ <comment xml:lang="bs">Usluga</comment>
<comment xml:lang="ca">Servei</comment>
<comment xml:lang="cs">Služba</comment>
<comment xml:lang="da">Tjeneste</comment>
<comment xml:lang="en_GB">Service</comment>
<comment xml:lang="es">Servicio</comment>
<comment xml:lang="fi">Palvelu</comment>
+ <comment xml:lang="fr">Service</comment>
<comment xml:lang="it">Servizio</comment>
<comment xml:lang="nl">Service</comment>
<comment xml:lang="pl">Usługa</comment>
<comment xml:lang="sr@ijekavian">сервис</comment>
<comment xml:lang="sr@ijekavianlatin">servis</comment>
<comment xml:lang="sr@latin">servis</comment>
+ <comment xml:lang="sv">Tjänst</comment>
<comment xml:lang="uk">Служба</comment>
+ <comment xml:lang="zh_TW">服務</comment>
</mime-type>
<mime-type type="application/vnd.kde.bluedevil-audio">
<comment>Service</comment>
+ <comment xml:lang="bs">Usluga</comment>
<comment xml:lang="ca">Servei</comment>
<comment xml:lang="cs">Služba</comment>
<comment xml:lang="da">Tjeneste</comment>
<comment xml:lang="en_GB">Service</comment>
<comment xml:lang="es">Servicio</comment>
<comment xml:lang="fi">Palvelu</comment>
+ <comment xml:lang="fr">Service</comment>
<comment xml:lang="it">Servizio</comment>
<comment xml:lang="nl">Service</comment>
<comment xml:lang="pl">Usługa</comment>
<comment xml:lang="sr@ijekavian">сервис</comment>
<comment xml:lang="sr@ijekavianlatin">servis</comment>
<comment xml:lang="sr@latin">servis</comment>
+ <comment xml:lang="sv">Tjänst</comment>
<comment xml:lang="uk">Служба</comment>
+ <comment xml:lang="zh_TW">服務</comment>
</mime-type>
<mime-type type="application/vnd.kde.bluedevil-network-panu">
<comment>Service</comment>
+ <comment xml:lang="bs">Usluga</comment>
<comment xml:lang="ca">Servei</comment>
<comment xml:lang="cs">Služba</comment>
<comment xml:lang="da">Tjeneste</comment>
<comment xml:lang="en_GB">Service</comment>
<comment xml:lang="es">Servicio</comment>
<comment xml:lang="fi">Palvelu</comment>
+ <comment xml:lang="fr">Service</comment>
<comment xml:lang="it">Servizio</comment>
<comment xml:lang="nl">Service</comment>
<comment xml:lang="pl">Usługa</comment>
<comment xml:lang="sr@ijekavian">сервис</comment>
<comment xml:lang="sr@ijekavianlatin">servis</comment>
<comment xml:lang="sr@latin">servis</comment>
+ <comment xml:lang="sv">Tjänst</comment>
<comment xml:lang="uk">Служба</comment>
+ <comment xml:lang="zh_TW">服務</comment>
</mime-type>
<mime-type type="application/vnd.kde.bluedevil-network-dun">
<comment>Service</comment>
+ <comment xml:lang="bs">Usluga</comment>
<comment xml:lang="ca">Servei</comment>
<comment xml:lang="cs">Služba</comment>
<comment xml:lang="da">Tjeneste</comment>
<comment xml:lang="en_GB">Service</comment>
<comment xml:lang="es">Servicio</comment>
<comment xml:lang="fi">Palvelu</comment>
+ <comment xml:lang="fr">Service</comment>
<comment xml:lang="it">Servizio</comment>
<comment xml:lang="nl">Service</comment>
<comment xml:lang="pl">Usługa</comment>
<comment xml:lang="sr@ijekavian">сервис</comment>
<comment xml:lang="sr@ijekavianlatin">servis</comment>
<comment xml:lang="sr@latin">servis</comment>
+ <comment xml:lang="sv">Tjänst</comment>
<comment xml:lang="uk">Служба</comment>
+ <comment xml:lang="zh_TW">服務</comment>
</mime-type>
<mime-type type="application/vnd.kde.bluedevil-sendfile">
<comment>Service</comment>
+ <comment xml:lang="bs">Usluga</comment>
<comment xml:lang="ca">Servei</comment>
<comment xml:lang="cs">Služba</comment>
<comment xml:lang="da">Tjeneste</comment>
<comment xml:lang="en_GB">Service</comment>
<comment xml:lang="es">Servicio</comment>
<comment xml:lang="fi">Palvelu</comment>
+ <comment xml:lang="fr">Service</comment>
<comment xml:lang="it">Servizio</comment>
<comment xml:lang="nl">Service</comment>
<comment xml:lang="pl">Usługa</comment>
<comment xml:lang="sr@ijekavian">сервис</comment>
<comment xml:lang="sr@ijekavianlatin">servis</comment>
<comment xml:lang="sr@latin">servis</comment>
+ <comment xml:lang="sv">Tjänst</comment>
<comment xml:lang="uk">Служба</comment>
+ <comment xml:lang="zh_TW">服務</comment>
</mime-type>
</mime-info>
Comment[sr@latin]=Režim Bluetootha će biti promenjen (npr. s normalnog na letni)
Comment[sv]=Blåtandläget ska just ändras (exempelvis från normal till flygning)
Comment[th]=โหมดของบลูทูทจะถูกเปลี่ยนโหมด (เช่น จากโหมดปกติเป็นโหมดไฟลท์ เป็นต้น)
-Comment[tr]=Bluetooth kipi değiştirilmek üzere (örn. normal -> uçuş modu)
+Comment[tr]=Bluetooth kipi değiştirilmek üzere (örn. normal -> uçuş kipi)
Comment[ug]=كۆكچىش ھالىتى ئۆزگەرتىلدى(مەسىلەن: نورمال -› ئۈچۈشقا)
Comment[uk]=Зміна режиму роботи Bluetooth (наприклад, зі звичайного на автономний)
Comment[x-test]=xxBluetooth mode is about to be changed (normal to flight for example)xx
QDBusPendingReply<void> reply = *watcher;
if (reply.isError()) {
qDebug() << "Error response: " << reply.error().message();
- killMonolithic();
}
}
SLOT(transferPropertiesChanged(QString,QVariantMap,QStringList)));
m_session = new org::bluez::obex::Session1("org.bluez.obex", m_transfer->session().path(), QDBusConnection::sessionBus(), this);
- kDebug(dblue()) << m_session->destination();
- Device* device = Manager::self()->usableAdapter()->deviceForAddress(m_session->destination());
- kDebug(dblue()) << device;
+ kDebug(dblue()) << "Source:" << m_session->source();
+ kDebug(dblue()) << "Destination:" << m_session->destination();
+
+ Device *device = 0;
+ bool isDeviceTrusted = false;
+
+ Q_FOREACH (Adapter *adapter, Manager::self()->adapters()) {
+ if (adapter->address() == m_session->source()) {
+ device = adapter->deviceForAddress(m_session->destination());
+ break;
+ }
+ }
m_deviceName = m_session->destination();
+
if (device) {
kDebug(dblue()) << device->name();
m_deviceName = device->name();
+ isDeviceTrusted = device->isTrusted();
}
FileReceiverSettings::self()->readConfig();
kDebug(dblue()) << "Auto Accept: " << FileReceiverSettings::self()->autoAccept();
- if (FileReceiverSettings::self()->autoAccept() == 1 && device->isTrusted()) {
+ if (FileReceiverSettings::self()->autoAccept() == 1 && isDeviceTrusted) {
slotAccept();
return;
} else if (FileReceiverSettings::self()->autoAccept() == 2) {
X-KDE-Keywords[sv]=Nätverk,Anslutningar,Blåtand
X-KDE-Keywords[tr]=Ağ, Bağlanılabilirlik, Bluetooth
X-KDE-Keywords[uk]=Network,Connectivity,Bluetooth,мережа,з’єднання,з'єднання
-X-KDE-Keywords[x-test]=xxNetwork,Connectivity,Bluetoothxx
+X-KDE-Keywords[x-test]=xxNetworkxx,xxConnectivityxx,xxBluetoothxx
X-KDE-Keywords[zh_CN]=Network,Connectivity,Bluetooth,网络,连接,蓝牙
X-KDE-Keywords[zh_TW]=Network,Connectivity,Bluetooth
X-KDE-Keywords[sv]=Nätverk,Anslutningar,Blåtand
X-KDE-Keywords[tr]=Ağ, Bağlanılabilirlik, Bluetooth
X-KDE-Keywords[uk]=Network,Connectivity,Bluetooth,мережа,з’єднання,з'єднання
-X-KDE-Keywords[x-test]=xxNetwork,Connectivity,Bluetoothxx
+X-KDE-Keywords[x-test]=xxNetworkxx,xxConnectivityxx,xxBluetoothxx
X-KDE-Keywords[zh_CN]=Network,Connectivity,Bluetooth,网络,连接,蓝牙
X-KDE-Keywords[zh_TW]=Network,Connectivity,Bluetooth
X-KDE-Keywords[sv]=Nätverk,Anslutningar,Blåtand
X-KDE-Keywords[tr]=Ağ, Bağlanılabilirlik, Bluetooth
X-KDE-Keywords[uk]=Network,Connectivity,Bluetooth,мережа,з’єднання,з'єднання
-X-KDE-Keywords[x-test]=xxNetwork,Connectivity,Bluetoothxx
+X-KDE-Keywords[x-test]=xxNetworkxx,xxConnectivityxx,xxBluetoothxx
X-KDE-Keywords[zh_CN]=Network,Connectivity,Bluetooth,网络,连接,蓝牙
X-KDE-Keywords[zh_TW]=Network,Connectivity,Bluetooth
${KDE4_KDECORE_LIBS}
${KDE4_KIO_LIBRARY}
${KDE4_KDEUI_LIBS}
- bluedevil
)
########### install files ###############
${KDE4_KDECORE_LIBS}
${KDE4_KDEUI_LIBS}
${KDE4_KFILE_LIBS}
- bluedevil
)
install(TARGETS kded_obexftpdaemon DESTINATION ${PLUGIN_INSTALL_DIR})
return d->m_status == Private::Online;
}
-QString ObexFtpDaemon::session(QString address, const QDBusMessage& msg)
+QString ObexFtpDaemon::session(const QString &address, const QString &target, const QDBusMessage& msg)
{
- address.replace("-", ":");
-
if (d->m_sessionMap.contains(address)) {
return d->m_sessionMap[address];
}
- kDebug(dobex()) << "Creating session for" << address;
+ kDebug(dobex()) << "Creating session for" << address << "target" << target;
// At this point we always want delayed reply
msg.setDelayedReply(true);
return QString();
}
- CreateSessionJob *job = new CreateSessionJob(address, msg);
+ CreateSessionJob *job = new CreateSessionJob(address, target, msg);
connect(job, SIGNAL(finished(KJob*)), SLOT(sessionCreated(KJob*)));
job->start();
public Q_SLOTS:
Q_SCRIPTABLE bool isOnline();
- Q_SCRIPTABLE QString session(QString address, const QDBusMessage &msg);
+ Q_SCRIPTABLE QString session(const QString &address, const QString &target, const QDBusMessage &msg);
Q_SCRIPTABLE bool cancelTransfer(const QString &transfer);
private Q_SLOTS:
#include <KDebug>
// class
-CreateSessionJob::CreateSessionJob(const QString& address, const QDBusMessage& msg, QObject* parent)
+CreateSessionJob::CreateSessionJob(const QString &address, const QString &target, const QDBusMessage &msg, QObject *parent)
: KJob(parent)
, m_address(address)
+ , m_target(target)
, m_client(0)
{
m_messages.append(msg);
m_messages.append(msg);
}
-const QList< QDBusMessage > CreateSessionJob::messages() const
+const QList<QDBusMessage> CreateSessionJob::messages() const
{
return m_messages;
}
{
kDebug(dobex());
QVariantMap args;
- args["Target"] = "ftp";
+ args["Target"] = m_target;
m_client = new OrgBluezObexClient1Interface("org.bluez.obex",
"/org/bluez/obex",
QDBusConnection::sessionBus(), this);
{
Q_OBJECT
public:
- explicit CreateSessionJob(const QString &address, const QDBusMessage &msg, QObject* parent = 0);
+ explicit CreateSessionJob(const QString &address, const QString &target, const QDBusMessage &msg, QObject *parent = 0);
virtual void start();
QString path();
private:
QString m_path;
QString m_address;
+ QString m_target;
QList<QDBusMessage> m_messages;
OrgBluezObexClient1Interface* m_client;
};
-#endif //CREATE_SESSION_JOB_H
\ No newline at end of file
+#endif //CREATE_SESSION_JOB_H
</method>
<method name="session">
<arg name="address" type="s" direction="in"/>
+ <arg name="target" type="s" direction="in"/>
<arg name="sessionPath" type="s" direction="out"/>
</method>
<method name="cancelTransfer">
#include <unistd.h>
+Q_DECLARE_METATYPE(DeviceInfo)
+
extern "C" int KDE_EXPORT kdemain(int argc, char **argv)
{
KAboutData about("kioobexftp", "bluedevil", ki18n("kioobexftp"), bluedevil_version);
m_timer = new QTimer();
m_timer->setInterval(100);
+ qDBusRegisterMetaType<DeviceInfo>();
qDBusRegisterMetaType<QVariantMapList>();
m_kded = new org::kde::ObexFtp("org.kde.kded", "/modules/obexftpdaemon", QDBusConnection::sessionBus(), 0);
}
void KioFtp::connectToHost()
{
- QDBusPendingReply<QString> reply = m_kded->session(m_host);
+ // Prefer pcsuite target on S60 devices
+ if (m_uuids.contains(QLatin1String("00005005-0000-1000-8000-0002EE000001"))) {
+ if (createSession("pcsuite")) {
+ return;
+ }
+ // Fallback to ftp
+ }
+
+ createSession("ftp");
+}
+
+bool KioFtp::testConnection()
+{
+ if (!m_kded->isOnline().value()) {
+ error(KIO::ERR_SLAVE_DEFINED, i18n("Obexd service is not running."));
+ return false;
+ }
+
+ connectToHost();
+
+ if (!m_transfer) {
+ error(KIO::ERR_COULD_NOT_CONNECT, m_host);
+ return false;
+ }
+ return true;
+}
+
+bool KioFtp::createSession(const QString &target)
+{
+ QDBusPendingReply<QString> reply = m_kded->session(m_host, target);
reply.waitForFinished();
const QString &sessionPath = reply.value();
delete m_transfer;
m_transfer = 0;
m_sessionPath.clear();
- return;
+ return false;
}
if (m_sessionPath != sessionPath) {
m_transfer = new org::bluez::obex::FileTransfer1("org.bluez.obex", sessionPath, QDBusConnection::sessionBus());
m_sessionPath = sessionPath;
}
-}
-
-bool KioFtp::testConnection()
-{
- if (!m_kded->isOnline().value()) {
- error(KIO::ERR_SLAVE_DEFINED, i18n("Obexd service is not running."));
- return false;
- }
-
- connectToHost();
- if (!m_transfer) {
- error(KIO::ERR_COULD_NOT_CONNECT, m_host);
- return false;
- }
return true;
}
+
void KioFtp::updateProcess()
{
if (m_counter == 49) {
kDebug() << "copy: " << src.url() << " to " << dest.url();
copyHelper(src, dest);
+ finished();
}
void KioFtp::rename(const KUrl& src, const KUrl& dest, KIO::JobFlags flags)
Q_UNUSED(pass)
m_host = host;
+ m_host = m_host.replace(QLatin1Char('-'), QLatin1Char(':')).toUpper();
+
+ QDBusMessage call = QDBusMessage::createMethodCall("org.kde.kded",
+ "/modules/bluedevil",
+ "org.kde.BlueDevil",
+ "device");
+ call << m_host;
+ QDBusReply<DeviceInfo> reply = QDBusConnection::sessionBus().call(call);
+ DeviceInfo info = reply.value();
+
+ m_uuids = info["UUIDs"];
infoMessage(i18n("Connecting to the device"));
if (!copyFile(src.path(), dest.path())) {
return;
}
-
- finished();
}
void KioFtp::copyFromObexftp(const KUrl& src, const KUrl& dest)
TransferFileJob *getFile = new TransferFileJob(dbusPath, this);
getFile->exec();
-
- finished();
}
void KioFtp::copyToObexftp(const KUrl& src, const KUrl& dest)
TransferFileJob *putFile = new TransferFileJob(dbusPath, this);
putFile->exec();
-
- finished();
}
void KioFtp::statHelper(const KUrl& url)
#include <kio/slavebase.h>
+typedef QMap<QString, QString> DeviceInfo;
+
class OrgBluezObexFileTransfer1Interface;
class KioFtp
: public QObject
void launchProgressBar();
void connectToHost();
bool testConnection();
+ bool createSession(const QString &target);
private:
int m_counter;
QMap<QString, KIO::UDSEntry> m_statMap;
QString m_host;
+ QString m_uuids;
QString m_sessionPath;
QTimer *m_timer;
org::kde::ObexFtp *m_kded;
pages/keyboardpairing.cpp
pages/ssppairing.cpp
pages/fail.cpp
+ pages/success.cpp
)
kde4_add_ui_files(wizard_SRCS
pages/keyboardpairing.ui
pages/ssppairing.ui
pages/fail.ui
+ pages/success.ui
)
kde4_add_executable(bluedevil-wizard ${wizard_SRCS})
#include "pages/legacypairingdatabase.h"
#include "pages/keyboardpairing.h"
#include "pages/ssppairing.h"
+#include "pages/success.h"
#include "pages/fail.h"
#include <QApplication>
setPage(LegacyPairingDatabase, new LegacyPairingPageDatabase(this));
setPage(KeyboardPairing, new KeyboardPairingPage(this));
setPage(SSPPairing, new SSPPairingPage(this));
+ setPage(Success, new SuccessPage(this));
setPage(Fail, new FailPage(this));
setButton(QWizard::BackButton, new KPushButton(KStandardGuiItem::back(KStandardGuiItem::UseRTL)));
WizardAgent* agent() const;
- enum {Discover, NoPairing, LegacyPairing, LegacyPairingDatabase, KeyboardPairing, SSPPairing, Fail, Connect};
+ enum {Discover, NoPairing, LegacyPairing, LegacyPairingDatabase, KeyboardPairing, SSPPairing, Success, Fail, Connect};
public Q_SLOTS:
void restartWizard();
, m_wizard(parent)
{
setupUi(this);
+
+ failIcon->setPixmap(KIcon("task-reject").pixmap(48));
}
void FailPage::initializePage()
</spacer>
</item>
<item>
+ <widget class="QLabel" name="failIcon">
+ <property name="maximumSize">
+ <size>
+ <width>48</width>
+ <height>48</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QLabel" name="failLbl">
<property name="text">
<string/>
using namespace BlueDevil;
-NoPairingPage::NoPairingPage(BlueWizard* parent) : QWizardPage(parent)
-, m_validPage(false)
-, m_wizard(parent)
+NoPairingPage::NoPairingPage(BlueWizard *parent)
+ : QWizardPage(parent)
+ , m_success(false)
+ , m_wizard(parent)
{
setupUi(this);
m_working = new KPixmapSequenceOverlayPainter(this);
m_working->start();
}
+int NoPairingPage::nextId() const
+{
+ if (m_success) {
+ return BlueWizard::Success;
+ }
+ return BlueWizard::Fail;
+}
+
void NoPairingPage::initializePage()
{
kDebug();
connecting->setText(connecting->text().append(m_wizard->device()->name()));
- //It can happen that the device is technically connected and trusted but we are not connected
- //to the profile. We have no way to know if the profile was activated or not so we have to relay
- //on a timeout (10s)
- QTimer::singleShot(10000, this, SLOT(timeout()));
connect(m_wizard->device(), SIGNAL(connectedChanged(bool)), SLOT(connectedChanged(bool)));
connect(m_wizard->device(), SIGNAL(trustedChanged(bool)), SLOT(connectedChanged(bool)));
m_wizard->device()->setTrusted(true);
}
-void NoPairingPage::timeout()
-{
- connectedChanged(true);
-}
-
void NoPairingPage::connectedChanged(bool connected)
{
- kDebug();
-
- m_validPage = connected;
- if (m_validPage) {
- kDebug() << "Done";
- m_wizard->done(0);
- }
-}
-
-bool NoPairingPage::validatePage()
-{
- return m_validPage;
-}
+ kDebug() << "Connect finished" << connected;
-int NoPairingPage::nextId() const
-{
- return -1;
+ // Connect may fail but that doesn't really mean the device was setup incorrectly
+ // Device::connectDevice will fail eg. when A2DP profile could not be connected due to missing pulseaudio plugin
+ m_success = true;
+ QTimer::singleShot(500, m_wizard, SLOT(next()));
}
QList<QWizard::WizardButton> NoPairingPage::wizardButtonsLayout() const
QList <QWizard::WizardButton> list;
list << QWizard::Stretch;
list << QWizard::CancelButton;
-
return list;
}
public:
NoPairingPage(BlueWizard* parent = 0);
- virtual void initializePage();
- virtual bool validatePage();
virtual int nextId() const;
+ virtual void initializePage();
protected:
QList <QWizard::WizardButton> wizardButtonsLayout() const;
private Q_SLOTS:
- void timeout();
void connectedChanged(bool connected);
private:
- bool m_validPage;
- BlueWizard *m_wizard;
+ bool m_success;
+ BlueWizard *m_wizard;
KPixmapSequenceOverlayPainter *m_working;
};
-#endif // NOPAIRING_H
\ No newline at end of file
+#endif // NOPAIRING_H