usbuis/usbuiqt/inc/usbuimodelactive.h
author hgs
Fri, 23 Apr 2010 23:17:21 +0300
changeset 43 4712310216c0
permissions -rw-r--r--
201003
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
43
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef USBUIMODELACTIVE_H
hgs
parents:
diff changeset
    19
#define USBUIMODELACTIVE_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <QObject>
hgs
parents:
diff changeset
    22
#include <e32base.h>
hgs
parents:
diff changeset
    23
#include <usbwatcher.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
class UsbUiModelActivePrivate;
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
/*!
hgs
parents:
diff changeset
    28
    \class UsbUiModelActive
hgs
parents:
diff changeset
    29
    \brief Helper class for using active objects in Qt classes.
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
    UsbUiModelActive is a helper class for using active objects 
hgs
parents:
diff changeset
    32
    from any Qt class. It wraps a CActive-derived class in an interface
hgs
parents:
diff changeset
    33
    that uses Qt's signal-slot mechanism for communicating status changes 
hgs
parents:
diff changeset
    34
    of the active object.
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
 */
hgs
parents:
diff changeset
    37
class UsbUiModelActive : public QObject
hgs
parents:
diff changeset
    38
{
hgs
parents:
diff changeset
    39
    Q_OBJECT
hgs
parents:
diff changeset
    40
    friend class UsbUiModelActivePrivate;
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
public:
hgs
parents:
diff changeset
    43
    explicit UsbUiModelActive( int priority = CActive::EPriorityStandard, 
hgs
parents:
diff changeset
    44
            QObject *parent = NULL );
hgs
parents:
diff changeset
    45
    ~UsbUiModelActive();
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
    inline TRequestStatus &RequestStatus();
hgs
parents:
diff changeset
    48
    inline void SetActive();
hgs
parents:
diff changeset
    49
    inline void Cancel();
hgs
parents:
diff changeset
    50
    inline bool IsActive();
hgs
parents:
diff changeset
    51
    
hgs
parents:
diff changeset
    52
public:
hgs
parents:
diff changeset
    53
    int SetUsbPersonality(int personality);
hgs
parents:
diff changeset
    54
    void CancelSetPersonality();
hgs
parents:
diff changeset
    55
    
hgs
parents:
diff changeset
    56
signals:
hgs
parents:
diff changeset
    57
    void requestCompleted( int status );
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
private:
hgs
parents:
diff changeset
    60
   /*!
hgs
parents:
diff changeset
    61
    * emits a signal when the request is completed
hgs
parents:
diff changeset
    62
    * @param status is the error
hgs
parents:
diff changeset
    63
    */
hgs
parents:
diff changeset
    64
    void emitRequestCompleted( int status );
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
private:
hgs
parents:
diff changeset
    67
    UsbUiModelActivePrivate *d;
hgs
parents:
diff changeset
    68
     
hgs
parents:
diff changeset
    69
    /** Handle to USBWatcher for setting the personality */
hgs
parents:
diff changeset
    70
    RUsbWatcher iUsbWatcher; 
hgs
parents:
diff changeset
    71
};
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
/*!
hgs
parents:
diff changeset
    75
    \class UsbUiModelActivePrivate
hgs
parents:
diff changeset
    76
    \brief Private class of UsbUiModelActive, for using active objects in Qt classes.
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
    UsbUiModelActivePrivate is a helper class for using active objects 
hgs
parents:
diff changeset
    79
    from any Qt class. It derives from CActive and allows other classes to use 
hgs
parents:
diff changeset
    80
    it for passing to asynchronous function calls through its RequestStatus method.
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
 */
hgs
parents:
diff changeset
    83
class UsbUiModelActivePrivate : public CActive
hgs
parents:
diff changeset
    84
{
hgs
parents:
diff changeset
    85
    friend class UsbUiModelActive;
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
public:
hgs
parents:
diff changeset
    88
    explicit UsbUiModelActivePrivate( UsbUiModelActive *parent, int priority );
hgs
parents:
diff changeset
    89
    ~UsbUiModelActivePrivate();
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
private:
hgs
parents:
diff changeset
    92
    virtual void RunL();
hgs
parents:
diff changeset
    93
    virtual void DoCancel();
hgs
parents:
diff changeset
    94
    virtual TInt RunError( TInt aError );
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
private:
hgs
parents:
diff changeset
    97
    UsbUiModelActive *q;
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
};
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
inline bool UsbUiModelActive::IsActive()
hgs
parents:
diff changeset
   102
{
hgs
parents:
diff changeset
   103
    return d->IsActive();
hgs
parents:
diff changeset
   104
}
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
inline TRequestStatus &UsbUiModelActive::RequestStatus()
hgs
parents:
diff changeset
   107
{
hgs
parents:
diff changeset
   108
    return d->iStatus;
hgs
parents:
diff changeset
   109
}
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
inline void UsbUiModelActive::SetActive()
hgs
parents:
diff changeset
   112
{
hgs
parents:
diff changeset
   113
    d->SetActive();
hgs
parents:
diff changeset
   114
}
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
inline void UsbUiModelActive::Cancel()
hgs
parents:
diff changeset
   117
{
hgs
parents:
diff changeset
   118
    d->Cancel();
hgs
parents:
diff changeset
   119
}
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
#endif /* USBUIMODELACTIVE_H */