2015-07-05 14:23:53 +01:00
/**
* Copyright 2015 Vineet Garg < grg . vineet @ gmail . com >
*
* 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 ) version 3 or any later version
* accepted by the membership of KDE e . V . ( or its successor approved
* by the membership of KDE e . V . ) , which shall act as a proxy
* defined in Section 14 of version 3 of the license .
*
* 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 , see < http : //www.gnu.org/licenses/>.
*/
# ifndef KDECONNECT_PAIRINGHANDLER_H
# define KDECONNECT_PAIRINGHANDLER_H
2015-07-25 12:45:19 +01:00
# include "device.h"
# include "networkpackage.h"
# include "devicelink.h"
2015-07-05 14:23:53 +01:00
2015-07-27 16:28:58 +01:00
# include <QTimer>
2015-07-25 12:45:19 +01:00
class PairingHandler : public QObject
{
Q_OBJECT
protected :
2015-07-27 16:28:58 +01:00
enum PairStatus {
NotPaired ,
Requested ,
RequestedByPeer ,
Paired ,
} ;
QTimer m_pairingTimeout ;
2015-07-25 12:45:19 +01:00
Device * m_device ;
2015-07-27 16:28:58 +01:00
DeviceLink * m_deviceLink ; // We keep the latest link here, if this is destroyed without new link, linkDestroyed is emitted and device will destroy pairing handler
PairStatus m_pairStatus ;
2015-07-05 14:23:53 +01:00
public :
2015-07-25 12:45:19 +01:00
PairingHandler ( Device * device ) ;
2015-07-05 14:23:53 +01:00
virtual ~ PairingHandler ( ) { }
2015-07-27 16:28:58 +01:00
void setLink ( DeviceLink * dl ) ;
bool isPaired ( ) const { return m_pairStatus = = PairStatus : : Paired ; } ;
bool pairRequested ( ) const { return m_pairStatus = = PairStatus : : Requested ; }
2015-07-14 13:04:04 +01:00
virtual void createPairPackage ( NetworkPackage & np ) = 0 ;
2015-07-27 16:28:58 +01:00
virtual void packageReceived ( const NetworkPackage & np ) = 0 ;
2015-07-25 12:45:19 +01:00
virtual bool requestPairing ( ) = 0 ;
virtual bool acceptPairing ( ) = 0 ;
virtual void rejectPairing ( ) = 0 ;
virtual void unpair ( ) = 0 ;
public Q_SLOTS :
void linkDestroyed ( QObject * ) ;
2015-07-27 16:28:58 +01:00
virtual void pairingTimeout ( ) = 0 ;
private :
virtual void setAsPaired ( ) = 0 ;
2015-07-25 12:45:19 +01:00
Q_SIGNALS :
2015-07-27 16:28:58 +01:00
void pairingDone ( ) ;
void unpairingDone ( ) ;
void pairingFailed ( const QString & error ) ;
void linkNull ( ) ;
2015-07-05 14:23:53 +01:00
} ;
# endif //KDECONNECT_PAIRINGHANDLER_H