|
|
|
/* This file is part of the TDE Project
|
|
|
|
Copyright (c) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Library General Public
|
|
|
|
License version 2 as published by the Free Software Foundation.
|
|
|
|
|
|
|
|
This library 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
|
|
|
|
Library General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This is a media:/ backend for the builtin TDE hardware library
|
|
|
|
*
|
|
|
|
* @author Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
|
|
|
* @short media:/ backend for the TDE hardware library
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _TDEBACKEND_H_
|
|
|
|
#define _TDEBACKEND_H_
|
|
|
|
|
|
|
|
#include "backendbase.h"
|
|
|
|
|
|
|
|
#include <tqobject.h>
|
|
|
|
#include <tqstringlist.h>
|
|
|
|
#include <tqstring.h>
|
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
|
|
|
|
#include <tdehardwaredevices.h>
|
|
|
|
|
|
|
|
namespace KIO {
|
|
|
|
class Job;
|
|
|
|
}
|
|
|
|
|
|
|
|
class Dialog;
|
|
|
|
|
|
|
|
class TDEBackend : public TQObject, public BackendBase
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Constructor
|
|
|
|
*/
|
|
|
|
TDEBackend(MediaList &list, TQObject* parent);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Destructor
|
|
|
|
*/
|
|
|
|
~TDEBackend();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* List all devices and append them to the media device list (called only once, at startup).
|
|
|
|
*
|
|
|
|
* @return true if succeded, false otherwise
|
|
|
|
*/
|
|
|
|
bool ListDevices();
|
|
|
|
|
|
|
|
TQStringList mountoptions(const TQString &id);
|
|
|
|
|
|
|
|
bool setMountoptions(const TQString &id, const TQStringList &options);
|
|
|
|
|
|
|
|
TQString mount(const TQString &id);
|
|
|
|
TQString mount(const Medium *medium);
|
|
|
|
TQString unmount(const TQString &id);
|
|
|
|
// TQString decrypt(const TQString &id, const TQString &password);
|
|
|
|
// TQString undecrypt(const TQString &id);
|
|
|
|
|
|
|
|
private:
|
|
|
|
/**
|
|
|
|
* Append a device in the media list. This function will check if the device
|
|
|
|
* is worth listing.
|
|
|
|
*
|
|
|
|
* @param sdevice A pointer to a TDEStorageDevice object
|
|
|
|
* @param allowNotification Indicates if this event will be notified to the user
|
|
|
|
*/
|
|
|
|
void AddDevice(TDEStorageDevice * sdevice, bool allowNotification=true);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Remove a device from the device list
|
|
|
|
*
|
|
|
|
* @param sdevice A pointer to a TDEStorageDevice object
|
|
|
|
*/
|
|
|
|
void RemoveDevice(TDEStorageDevice * sdevice);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A device has changed, update it
|
|
|
|
*
|
|
|
|
* @param sdevice A pointer to a TDEStorageDevice object
|
|
|
|
*/
|
|
|
|
void ModifyDevice(TDEStorageDevice * sdevice);
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void AddDeviceHandler(TDEGenericDevice* device);
|
|
|
|
void RemoveDeviceHandler(TDEGenericDevice* device);
|
|
|
|
void ModifyDeviceHandler(TDEGenericDevice* device);
|
|
|
|
|
|
|
|
void slotPasswordReady();
|
|
|
|
void slotPasswordCancel();
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void signalDecryptionPasswordError(TQString);
|
|
|
|
|
|
|
|
/* Set media properties */
|
|
|
|
private:
|
|
|
|
/**
|
|
|
|
* Reset properties for the given medium
|
|
|
|
*
|
|
|
|
* @param sdevice A pointer to a TDEStorageDevice objec
|
|
|
|
*/
|
|
|
|
void ResetProperties(TDEStorageDevice * sdevice, bool allowNotification=false);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Find the medium that is concerned with device udi
|
|
|
|
*/
|
|
|
|
// const char* findMediumUdiFromUdi(const char* udi);
|
|
|
|
|
|
|
|
void setVolumeProperties(Medium* medium);
|
|
|
|
bool setFloppyProperties(Medium* medium);
|
|
|
|
// void setFloppyMountState( Medium* medium );
|
|
|
|
// bool setFstabProperties(Medium* medium);
|
|
|
|
void setCameraProperties(Medium* medium);
|
|
|
|
TQString generateName(const TQString &devNode);
|
|
|
|
static TQString isInFstab(const Medium *medium);
|
|
|
|
static TQString listUsingProcesses(const Medium *medium);
|
|
|
|
static TQString killUsingProcesses(const Medium *medium);
|
|
|
|
|
|
|
|
// Decryption
|
|
|
|
Dialog* m_decryptDialog;
|
|
|
|
TQString m_decryptionPassword;
|
|
|
|
bool m_decryptPasswordValid;
|
|
|
|
|
|
|
|
/* TDE structures */
|
|
|
|
private:
|
|
|
|
/**
|
|
|
|
* Object for the kded module
|
|
|
|
*/
|
|
|
|
TQObject* m_parent;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Data structure for fstab mount/unmount jobs
|
|
|
|
*/
|
|
|
|
struct mount_job_data {
|
|
|
|
// [in] Medium, which is being mounted/unmounted by the job
|
|
|
|
const Medium* medium;
|
|
|
|
// [in,out] Should be set to true when the job completes
|
|
|
|
bool completed;
|
|
|
|
// [out] KIO::Error if an error occured during operation. Otherwise, 0
|
|
|
|
int error;
|
|
|
|
// [out] Error message to be displayed to the user
|
|
|
|
TQString errorMessage;
|
|
|
|
};
|
|
|
|
|
|
|
|
TQMap<KIO::Job *, struct mount_job_data*> mount_jobs;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* _TDEBACKEND_H_ */
|