00001 /* 00002 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. 00003 * 00004 * Redistribution and use in source and binary forms, with or without 00005 * modification, are permitted provided that the following conditions are met: 00006 * 00007 * * Redistributions of source code must retain the above copyright notice, this 00008 * list of conditions and the following disclaimer. 00009 * * Redistributions in binary form must reproduce the above copyright notice, 00010 * this list of conditions and the following disclaimer in the documentation 00011 * and/or other materials provided with the distribution. 00012 * * Neither the name of Nokia Corporation nor the names of its contributors 00013 * may be used to endorse or promote products derived from this software 00014 * without specific prior written permission. 00015 * 00016 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00017 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00018 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00019 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00020 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00021 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00022 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00023 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00024 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00025 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00026 * 00027 * Description: 00028 */ 00029 00030 #ifndef BLUETOOTHAPPWINDOW_H 00031 #define BLUETOOTHAPPWINDOW_H 00032 00033 #include <QMainWindow> 00034 00035 //Forward declarations 00036 class QTextEdit; 00037 class QAction; 00038 class BluetoothDiscovery; 00039 00040 /* 00041 * This class is used to create the user interface for the 00042 * Application. 00043 * You can exercise the following use cases from the menu 00044 * options of the UI: 00045 * - Discover devices. 00046 * - Discover services. 00047 * - Stop discovery. 00048 * - Send message. 00049 * - Start slave. 00050 * - Connect devices. 00051 * - Disconnect from the connection. 00052 * - Disconnect from all the devices connected. 00053 * - Show connected devices. 00054 */ 00055 class BluetoothAppWindow : public QMainWindow 00056 { 00057 Q_OBJECT 00058 00059 public: 00060 enum BluetoothDiscoveryMode{ 00061 EStopDeviceDiscovery = 0, 00062 EDeviceDiscoveryComplete, 00063 EHasDevices, 00064 EHasServices, 00065 EHasConnections, 00066 EStopSlave, 00067 ESendMessage 00068 }; 00069 00070 explicit BluetoothAppWindow(QWidget *parent = 0); 00071 00072 private: 00073 void initializeWindow(); 00074 void addMenu(); 00075 void initializeMenu(); 00076 00077 private slots: 00078 void discoverDevices(); 00079 void discoverServices(); 00080 void stopDiscovery(); 00081 void sendMessage(); 00082 void startSlave(); 00083 void connectDevices(); 00084 void stopSlave(); 00085 void disconnectDevices(); 00086 void showConnectedDevices(); 00087 void changeMenu(int menuOptions); 00088 void clearText(); 00089 void showMessage(bool aSeperator, QString aDisplayInfo); 00090 00091 private: 00092 QTextEdit *mRemoteDevicesList; 00093 BluetoothDiscovery *mBluetoothDiscovery; 00094 QString mDisplayText; 00095 QAction *mDiscoverDevices; 00096 QAction *mDiscoverServices; 00097 QAction *mStopDiscovery; 00098 QAction *mSendMessage; 00099 QAction *mStartSlave; 00100 QAction *mConnectDevices; 00101 QAction *mStopSlave; 00102 QAction *mDisconnectDevices; 00103 QAction *mShowConnectedDevices; 00104 QAction *mClearText; 00105 }; 00106 00107 #endif // BLUETOOTHAPPWINDOW_H