00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 from PyQt4.QtCore import *
00029 from PyQt4.QtGui import *
00030 from PyQt4.uic import *
00031 
00032 from Koo.Common import Common
00033 from Koo.Common import Url
00034 from DatabaseDialog import *
00035 import ServerConfigurationDialog
00036 from DatabaseCreationDialog import DatabaseCreationDialog
00037 
00038 (LoginDialogUi, LoginDialogBase) = loadUiType( Common.uiPath('login.ui') )
00039 
00040 
00041 
00042 
00043 
00044 
00045 class LoginDialog( QDialog, LoginDialogUi ):
00046         defaultHost = ''
00047         defaultPort = 0
00048         defaultProtocol = ''
00049         defaultUserName = ''
00050 
00051         def __init__(self, parent=None ):
00052                 QDialog.__init__(self, parent)
00053                 LoginDialogUi.__init__(self)
00054                 self.setupUi( self )
00055 
00056                 self.pushCreateDatabase.hide()
00057                 self.pushRestoreDatabase.hide()
00058                 self.uiTextDatabase.hide()
00059                 self.databaseName = ''
00060 
00061                 QTimer.singleShot( 0, self.initGui )
00062         
00063         def setDatabaseName( self, name ):
00064                 self.databaseName = name
00065 
00066         def initGui(self):
00067                 self.connect( self.pushCancel, SIGNAL("clicked()"), self.slotCancel )
00068                 self.connect( self.pushAccept, SIGNAL("clicked()"), self.slotAccept )
00069                 self.connect( self.pushChange, SIGNAL("clicked()"), self.slotChange )
00070                 self.connect( self.pushCreateDatabase, SIGNAL("clicked()"), self.createDatabase )
00071                 self.connect( self.pushRestoreDatabase, SIGNAL("clicked()"), self.restoreDatabase )
00072 
00073                 uid = 0
00074                 self.uiNoConnection.hide()
00075 
00076                 url = QUrl( Settings.value( 'login.url' ) )
00077                 self.uiUserName.setText( url.userName() )
00078                 url.setUserName( '' )
00079                 self.uiServer.setText( url.toString() )
00080                 res = self.refreshList()
00081 
00082         def refreshList(self):
00083                 res = ServerConfigurationDialog.refreshDatabaseList(self.uiDatabase, str( self.uiServer.text() ), self.databaseName )
00084                 if res == -1:
00085                         self.uiNoConnection.setText('<b>'+_('Could not connect to server !')+'</b>')
00086                         self.uiNoConnection.show()
00087                         self.uiDatabase.hide()
00088                         self.uiTextDatabase.hide()
00089                         self.pushCreateDatabase.hide()
00090                         self.pushRestoreDatabase.hide()
00091                         self.pushAccept.setEnabled(False)
00092                 elif res == 0:
00093                         self.uiNoConnection.setText('<b>'+_('No database found, you must create one !')+'</b>')
00094                         self.uiNoConnection.show()
00095                         self.uiDatabase.hide()
00096                         self.uiTextDatabase.hide()
00097                         self.pushCreateDatabase.show()
00098                         self.pushRestoreDatabase.show()
00099                         self.pushAccept.setEnabled(False)
00100                 else:
00101                         self.uiNoConnection.hide()
00102                         if res == -2:
00103                                 self.uiDatabase.hide()
00104                                 self.uiTextDatabase.show()
00105                         else:
00106                                 self.uiDatabase.show()
00107                                 self.uiTextDatabase.hide()
00108                         self.pushCreateDatabase.hide()
00109                         self.pushRestoreDatabase.hide()
00110                         self.pushAccept.setEnabled(True)
00111                 return res
00112 
00113         def slotChange(self):
00114                 dialog = ServerConfigurationDialog.ServerConfigurationDialog( self )
00115                 dialog.setUrl( Settings.value( 'login.url' ) )
00116                 if dialog.exec_() == QDialog.Accepted:
00117                         QApplication.setOverrideCursor( Qt.WaitCursor )
00118                         self.uiServer.setText( dialog.url )
00119                         self.refreshList()
00120                         QApplication.restoreOverrideCursor()
00121 
00122         def slotAccept( self ):
00123                 m = QUrl( self.uiServer.text() )
00124                 m.setUserName( Url.encodeForUrl( self.uiUserName.text() ) )
00125                 m.setPassword( Url.encodeForUrl( self.uiPassword.text() ) )
00126                 if m.isValid(): 
00127                         self.url = unicode( m.toString() )
00128                         if self.uiDatabase.isVisible():
00129                                 self.databaseName = unicode( self.uiDatabase.currentText() )
00130                         else:
00131                                 self.databaseName = unicode( self.uiTextDatabase.text() )
00132                         m.setPassword( '' )
00133                         Settings.setValue( 'login.url', unicode( m.toString() ) )
00134                         Settings.setValue( 'login.db', self.databaseName )
00135                         Settings.saveToFile()
00136                         self.accept()
00137                 else:
00138                         self.reject()
00139 
00140         def slotCancel(self):
00141                 self.reject()
00142 
00143         def createDatabase(self):
00144                 dialog = DatabaseCreationDialog(self)
00145                 if dialog.exec_() == QDialog.Accepted:
00146                         self.url = dialog.url
00147                         self.databaseName = dialog.databaseName
00148                         self.accept()
00149 
00150         def restoreDatabase(self):
00151                 restoreDatabase( self )
00152                 QApplication.setOverrideCursor( Qt.WaitCursor )
00153                 self.refreshList()
00154                 QApplication.restoreOverrideCursor()
00155