--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ImagePrint/ImagePrintUI/imgpprintdll/inc/cuiprotocolcontroller.h Wed Sep 01 12:30:38 2010 +0100
@@ -0,0 +1,254 @@
+/*
+* Copyright (c) 2004-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#ifndef CUIPROTOCOLCONTROLLER_H
+#define CUIPROTOCOLCONTROLLER_H
+
+#include <e32def.h>
+#include <e32base.h>
+#include <AknProgressDialog.h>
+#include <usbman.h>
+
+#include "cdiscoverydlgmanager.h"
+#include "mprotocolobserver.h"
+#include "midleprinteventobserver.h"
+#include "imageprint.h"
+
+class CIFFactory;
+class MIdlePrintEventRegisterIF;
+class MDiscovery;
+class MPrintSettings;
+class CCustomNoteDialog;
+
+const TUint KAllBTProtocols = KImagePrint_PrinterProtocol_BPP |
+ KImagePrint_PrinterProtocol_BIP |
+ KImagePrint_PrinterProtocol_OPP_Printer |
+ KImagePrint_PrinterProtocol_OPP_PC;
+
+// CLASS DEFINITION
+/**
+ *
+ * Class searches printers(protocols) and creates print job for
+ * selected printer. Class also works as an idle observer.
+ *
+ */
+class CUIProtocolController:
+ public CBase,
+ public MIdlePrintEventObserver,
+ public MProgressDialogCallback
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Standard two-phase constructors
+ *
+ * @param aProtocolObserver Protocol observer
+ * @param aIFFactory Interface factory class
+ *
+ * @return Initialized instance of the class
+ */
+ IMPORT_C static CUIProtocolController* NewL( MProtocolObserver* aProtocolObserver,
+ CIFFactory& aIFFactory );
+ static CUIProtocolController* NewLC( MProtocolObserver* aProtocolObserver,
+ CIFFactory& aIFFactory );
+ /**
+ * Destructor.
+ */
+ virtual ~CUIProtocolController();
+
+ private:
+
+ /**
+ * Default constructor.
+ * @param aProtocolObserver Protocol observer
+ * @param aIFFactory Interface factory class
+ */
+ CUIProtocolController( MProtocolObserver* aProtocolObserver,
+ CIFFactory& aIFFactory );
+
+ /**
+ * Second phase constructor
+ *
+ * @param aIFFactory Interface factory class
+ */
+ void ConstructL( CIFFactory& aIFFactory );
+
+ public: // Methods derived from MIdlePrintEventObserver
+ void UsbPrinterDisconnected();
+ void UsbPrinterConnected();
+ void UsbStateChanged( TImgPrintUSBState aState, TInt aError );
+ void ReadyToContinue();
+ void AsynchronousServerLeave( TInt aError );
+
+ public: // Methods derived from MProgressDialogCallback
+ void DialogDismissedL(TInt /*aButtonId*/ );
+
+ public: // New methods
+
+ /**
+ * Searches default printer and takes it into use. If default
+ * printer is not found full searcg is performed.
+ *
+ * @return ETrue if printer is succesfully taken into use
+ * EFalse in all other cases.
+ */
+ IMPORT_C TBool SearchDefaultPrinterL();
+
+ /**
+ * Searches printer with a given protocol, takes it into use
+ * and sets the given protocol as a default one.
+ *
+ * @param aProtocol Protocol to be searched for.
+ * @return ETrue if printer is succesfully taken into use
+ * EFalse in all other cases.
+ */
+ IMPORT_C TBool ChangeDefaultPrinterL( TInt aProtocol );
+
+ /**
+ * Searches for all available printers.
+ * PrintJob is created after discovery with the selected
+ * printer.
+ *
+ * @return ETrue if printer has been taken into use.
+ * EFalse in all other cases.
+ */
+ TBool FullSearchL();
+
+ private: // New methods
+
+ TBool SetDefaultPrinterL( TInt aDefaultProtocol );
+
+ /**
+ * Searches the usb printer. Method is synchronous.
+ * PrintJob is created after discovery has been done.
+ *
+ * @return ETrue if PictBridge printer has been taken into use.
+ * EFalse in all other cases.
+ */
+ TBool SearchUSBPrinterL();
+
+ /**
+ * Takes the default BT printer into use.
+ * PrintJob is created without discovery.
+ *
+ * @return ETrue if default BT printer has been taken into use.
+ * EFalse in all other cases.
+ */
+ TBool SearchDefaultBTPrinterL();
+
+ /**
+ * Searches for all available BT printers.
+ * PrintJob is created after discovery with the selected
+ * printer.
+ *
+ * @return ETrue if BT printer has been taken into use.
+ * EFalse in all other cases.
+ */
+ TBool SearchBTPrinterL();
+
+ /**
+ * Searches for all available UPnP(WLAN) printers.
+ * PrintJob is created after discovery with the selected
+ * printer.
+ *
+ * @return ETrue if UPnP printer has been taken into use.
+ * EFalse in all other cases.
+ */
+ TBool SearchUPnPPrinterL();
+
+ /**
+ * Takes the default UPnP(WLAN) printer into use
+ * via hidden discovery
+ *
+ * @return ETrue if default UPnP(WLAN) printer has been taken into use.
+ * EFalse in all other cases.
+ */
+ TBool SearchDefaultUPnPPrinterL();
+
+ /**
+ * Takes the MMC into use.
+ * PrintJob is created without discovery.
+ *
+ * @return ETrue if MMC has been taken into use.
+ * EFalse in all other cases.
+ */
+ TBool SearchMMCPrinterL();
+
+ /**
+ * Is Usb cable connected AND in PictBridge mode
+ * @return ETrue if usb connected and in right mode, EFalse if not.
+ */
+ TBool IsUsbCableConnected();
+
+ /**
+ * Displays Connect USB cable -note.
+ */
+ void ShowConnectUsbCableNoteL();
+
+ private: // Enumerations
+
+ // Different states of device discovery
+ enum TClassState
+ {
+ ENormalState,
+ EDiscoveryOngoing,
+ EUSBDisconnectedDuringDiscovery
+ };
+
+ private: // Data
+
+ // Observer
+ MProtocolObserver* iProtocolObserver;
+
+ // Interface for registering idle observer
+ MIdlePrintEventRegisterIF* iIdleEventRegister;
+
+ // Interface for device discovery
+ MDiscovery* iDiscovery;
+
+ // Interface for settings
+ MPrintSettings* iSettings;
+
+ // Interface factory
+ CIFFactory* iIFFactory;
+
+ // USB connect note
+ CCustomNoteDialog* iUSBConnectionWaitNote;
+
+ // Usb manager
+ RUsb iUsbManager;
+
+ // Device state
+ TUsbDeviceState iDeviceState;
+
+ // Class state related to usb and discovery
+ TInt iClassState;
+
+ // Discovery dialog manager in case when search all protocols
+ CDiscoveryDlgManager* iDiscoveryDlgManager;
+
+ // tells that usb is connect during all protocols search.
+ TBool iStartUsb;
+
+ // indicates that usb connection has terminated at least once
+ TBool iWasUsbDisconnected;
+ };
+
+#endif // CUIPROTOCOLCONTROLLER_H
+
+// End of File