7 #include "WindowManager.h"
9 #include "WeeklyViewWidget.h"
10 #include "SettingsView.h"
11 #include "RoomStatusIndicatorWidget.h"
12 #include "PasswordDialog.h"
13 #include "MeetingInfoDialog.h"
14 #include "ProgressBar.h"
15 #include "CommunicationManager.h"
16 #include "Configuration.h"
17 #include "DisplaySettings.h"
21 #define QT_DELETE(X) \
28 UIManager::UIManager( Engine *aEngine, WindowManager *aWindowManager ) :
30 iWindowManager( aWindowManager ),
33 iRoomStatusIndicator( 0 ),
38 if ( iEngine == 0 ) return;
39 if ( iWindowManager == 0 ) return;
43 createRoomStatusIndicator();
44 createPasswordDialog();
46 createMeetingInfoDialog();
49 UIManager::~UIManager()
54 QT_DELETE( iMeetingInfo );
55 QT_DELETE( iProgressBar );
56 QT_DELETE( iPasswordDialog );
57 QT_DELETE( iRoomStatusIndicator );
58 QT_DELETE( iSettingsView );
59 QT_DELETE( iWeeklyView );
62 void UIManager::showMainView()
64 iWindowManager->showView( iWeeklyView );
67 void UIManager::showProgressBar( QString aText )
69 if ( iProgressBar != 0 )
71 iProgressBar->update( tr("Changing current operation mode.") );
72 iWindowManager->showDialog( iProgressBar );
76 // ===============================================
77 // INITIALIZE THE UIMANAGER
78 void UIManager::createWeeklyView()
80 iWeeklyView = new WeeklyViewWidget( QDateTime::currentDateTime(), iEngine->iConfiguration );
83 connect( iWeeklyView, SIGNAL( settingsButtonClicked() ), this, SLOT( settingsViewRequest() ) );
84 connect( iWeeklyView, SIGNAL( currentRoomChanged( Room * ) ), this, SLOT( currentRoomChanged( Room * ) ) );
87 void UIManager::createSettingsView()
89 iSettingsView = new SettingsView;
92 connect( iSettingsView, SIGNAL( okClicked() ), this, SLOT( settingsOkClicked() ) );
95 void UIManager::createRoomStatusIndicator()
97 iRoomStatusIndicator = new RoomStatusIndicatorWidget( iEngine->defaultRoom(), Room::FreeStatus, QTime::currentTime(), iEngine->iConfiguration->displaySettings()->dateFormat() );
100 void UIManager::createPasswordDialog()
102 iPasswordDialog = new PasswordDialog( iEngine->iConfiguration->adminPassword(), tr("UIManager::createPasswordDialog"), tr("UIManager::createPasswordDialog") );
105 void UIManager::createProgressBar()
107 iProgressBar = new ProgressBar( tr("CHANGE THIS") );
109 connect( iProgressBar, SIGNAL( cancelled() ), this, SLOT( progressBarCancelled() ) );
110 connect( iProgressBar, SIGNAL( cancelled() ), iEngine, SLOT( progressBarCancelled() ) );
113 void UIManager::createMeetingInfoDialog()
118 void UIManager::connectDeviceManager( DeviceManager *aDeviceManager )
120 connect( aDeviceManager, SIGNAL( changeModeOrdered( DeviceManager::OperationMode ) ),
121 this, SLOT( changeModeOrdered( DeviceManager::OperationMode ) ) );
123 connect( aDeviceManager, SIGNAL( changingMode( const QString & ) ), iProgressBar, SLOT( update( const QString & ) ) );
126 void UIManager::connectCommunicationManager( CommunicationManager *aCommunicationManager )
128 // To communication manager
129 connect( iWeeklyView, SIGNAL( meetingActivated( Meeting * ) ), aCommunicationManager, SLOT( fetchMeetingDetails( Meeting * ) ) );
131 // From communication manager
132 connect( aCommunicationManager, SIGNAL( meetingsFetched( const QList<Meeting *> ) ), this, SLOT( meetingsFetched( const QList<Meeting *> ) ) );
133 connect( aCommunicationManager, SIGNAL( meetingDetailsFetched( Meeting & ) ), this, SLOT( meetingDetailsFetched( Meeting & ) ) );
136 // ============================================
138 void UIManager::settingsViewRequest()
140 // Show the settings view and stop the idle timer
141 if ( iSettingsView != 0 )
143 iWindowManager->showView( static_cast<ViewBase *>( iSettingsView ) );
144 iEngine->stopIdleTimeCounter();
148 void UIManager::settingsOkClicked()
150 // Show the weekly view and restart the idle timer
151 if ( iWeeklyView != 0 )
153 iWindowManager->showView( static_cast<ViewBase *>( iWeeklyView ) );
154 iEngine->startIdleTimeCounter();
158 void UIManager::meetingsFetched( const QList<Meeting*> &aMeetings )
163 void UIManager::meetingDetailsFetched(Meeting &aDetailedMeeting)
165 if ( iMeetingInfo != 0 )
167 iMeetingInfo->setMeeting( &aDetailedMeeting );
168 iWindowManager->showDialog( static_cast<QDialog *>( iMeetingInfo ) );
172 void UIManager::roomStatusIndicatorRequested()
174 if ( iRoomStatusIndicator != 0 )
176 iWindowManager->showView( static_cast<ViewBase *>( iRoomStatusIndicator ) );
177 iEngine->stopIdleTimeCounter();
181 void UIManager::previousViewRestored()
183 iEngine->startIdleTimeCounter();
186 void UIManager::progressBarCancelled()
188 // TODO : Close progress bar
191 void UIManager::changeModeOrdered( DeviceManager::OperationMode aMode )
193 qDebug() << "[UIManager::changeModeOrdered] <Invoked>";
195 QString message = tr( "You are about to change operation mode to %1." )
196 .arg( iEngine->iDevice->operationModeToString( aMode ) );
198 if ( iPasswordDialog != 0 )
200 // TODO : Set the new text for password dialog
201 iWindowManager->showDialog( static_cast<QDialog *>( iPasswordDialog ) );
205 void UIManager::currentRoomChanged(Room *aRoom)
207 if ( iWeeklyView != 0 )
209 QDateTime from = QDateTime( iWeeklyView->beginnigOfShownWeek() );
210 QDateTime to = QDateTime( from.addDays( 8 ) );
211 iEngine->fetchMeetings( from, to, aRoom );
215 void UIManager::updateTime(QDateTime aDateTime)
217 if ( iWeeklyView != 0 )
219 iWeeklyView->setCurrentDateTime( aDateTime );