Initial commit (Vesion 0.1)
[tablet-suite] / src / backup / .svn / text-base / pcscheckboxwizard.py.svn-base
diff --git a/src/backup/.svn/text-base/pcscheckboxwizard.py.svn-base b/src/backup/.svn/text-base/pcscheckboxwizard.py.svn-base
new file mode 100644 (file)
index 0000000..7745894
--- /dev/null
@@ -0,0 +1,292 @@
+# Authors: Amaury Medeiros and Paulo Ouriques
+# Software License: GPL
+
+from functools import partial
+
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+
+from ui.pcsbutton import *
+from ui.pcsdevicewidget import PcsDeviceWidget
+from ui.pcscustombuttons import PcsCustomButton as customButton
+from ui.pcsuiutils import *
+from style.styleTabletSuite import *
+from pcsbackupmanagerui import *
+from pcsrestorebackupui import *
+
+class PcsCheckboxWizard(QWizardPage):
+       
+    def __init__(self, deviceInfo, windowManager, parent = None):
+        QWizardPage.__init__(self, parent)
+        self.deviceInfo = deviceInfo
+        self.windowManager = windowManager
+        
+        self.layout = QVBoxLayout()
+        self.layout.setMargin(0)
+        self.layout.setSpacing(0)
+        buttonsLayout = self._menuButtons()
+        self.layout.addLayout(buttonsLayout)
+        self.layout.addItem(QSpacerItem(0, 8))
+        wayLayout = self._wayLayout()
+        self.layout.addLayout(wayLayout)
+
+        self.layout.addItem(QSpacerItem(0, 10))
+
+        self.hlayout = QHBoxLayout()
+        self.hlayout.setMargin(0)
+        
+        self.vertical = QVBoxLayout()
+        self.vertical.setMargin(0)
+        self.vertical.setSpacing(0)
+        self.create_vertical_components()
+        self.hlayout.addLayout(self.vertical)
+        self.hlayout.setMargin(0)
+        self.hlayout.setSpacing(0)
+        
+        self.create_checkbox_frame()
+#        self.hlayout.addItem(QSpacerItem(30, 0))
+        self.layout.addLayout(self.hlayout)
+        
+        self.layout.addItem(QSpacerItem(0, 35))
+        informationLayout = QHBoxLayout()
+        informationLayout.setMargin(0)
+        spc = QSpacerItem(10, 0)
+        iconAlert = QLabel()
+        iconAlert.setPixmap(QPixmap(ICON_ALERT))
+        information = QLabel("<font style='color:"\
+                             "#333333'; size=2>"\
+                             "Select the types of file you wish to backup.</font>")
+        informationLayout.addItem(spc)
+        informationLayout.addWidget(iconAlert)
+        informationLayout.addWidget(information, Qt.AlignLeft)
+
+        self.layout.addLayout(informationLayout)
+        
+        self.setLayout(self.layout)
+        self.map_checked = {self.documents.name: False,
+                            self.emails.name: False, self.media.name: False,
+                            self.contacts.name: False, 
+                            self.bookmarks.name: False,
+                            self.settings.name: False, 
+                            self.applications.name: False}
+        self.enableNext = QLineEdit()
+        self.registerField("enableNext*", self.enableNext)
+    
+    def _wayLayout(self):
+        barLayout = QHBoxLayout()
+        barLayout.setMargin(0)
+        main = QLabel("<font style='color: #333333'; size=2>Main</font>")
+        arrow = self._arrow()
+        arrow2 = self._arrow()
+        spc = QSpacerItem(5, 0)
+        newBackup = QLabel("<font style='color: #333333'; size=2> New Backup</font>")
+        files = QLabel("<font style='color: #FFFFFF'; size=2>Files</font>")
+        widgetList = [main, arrow, newBackup, arrow2, files]
+        for widget in widgetList:
+            barLayout.addWidget(widget, Qt.AlignLeft)
+            barLayout.addItem(spc)
+        barLayout.addItem(QSpacerItem(300, 0))
+        return barLayout
+    
+    def _arrow(self):
+        label = QLabel()
+        label.setPixmap(QPixmap(BLACK_ARROW))
+        return label
+            
+    def _menuButtons(self):
+        infList = [("New Backup", SMALL_ICON_NEW_BACKUP_STYLE_SELECTED), 
+                   ("Manage Backup", SMALL_ICON_MANAGER_BACKUP_STYLE, self._manageDialog),
+                   ("Restore Backup", SMALL_ICON_RESTORE_BACKUP_STYLE, self._restoreDialog)]
+        buttonsLayout = QHBoxLayout()
+        buttonsLayout.setMargin(0)
+        for i in range(3):
+            but = QPushButton(infList[i][0])
+            but.setStyleSheet(infList[i][1])
+            if i <> 0:
+                buttonsLayout.addWidget(but, Qt.AlignLeft)
+                self.connect(but, SIGNAL("clicked()"), infList[i][2])
+            else:
+                buttonsLayout.addWidget(but)
+        return buttonsLayout   
+    
+    def _manageDialog(self):
+        if(self.deviceInfo and self.deviceInfo.ip != None):
+            backupManager = self.windowManager.getBackupManager()
+            centralize(backupManager)
+            backupManager.setGeometry(self.wizard().geometry())
+            backupManager.show()
+            self.wizard().close()
+            self.close()
+        else:
+            self._showNoDeviceFoundMessage()
+    
+    def _restoreDialog(self):
+        if(self.deviceInfo and self.deviceInfo.ip != None):
+            restoreBackup = self.windowManager.getRestoreBackup()
+            centralize(restoreBackup)
+            restoreBackup.setGeometry(self.wizard().geometry())
+            restoreBackup.show()
+            self.wizard().close()
+            self.close()
+        else:
+            self._showNoDeviceFoundMessage()
+    
+    def _goNextPage(self):
+        if self.empty_map():
+            return False
+        else:
+            self.wizard().next()
+    
+    
+    def _showNoDeviceFoundMessage(self):
+        inf = QMessageBox(self)
+        inf.setWindowTitle("Connect a device.")
+        inf.setText("No devices were found.")
+        inf.show()
+    
+    def create_checkbox_frame(self):
+        layout = QVBoxLayout()
+        l = QLabel()
+        l.setPixmap(QPixmap(COPY_BORDER))
+       
+        self.frame = QScrollArea(self)
+        self.frame.setWidgetResizable(True)
+        widget = QWidget(self.frame)
+        widget.setStyleSheet("QWidget{background: transparent;}")
+        self.grid = QGridLayout()
+        self.grid.setSpacing(0)
+        self.createCheckboxPanel()
+        widget.setLayout(self.grid)
+        self.frame.setWidget(widget)
+        layout.addItem(QSpacerItem(0,25))
+        layout.addWidget(self.frame)
+        self.hlayout.addLayout(layout)
+        
+    
+    def empty_map(self):
+        for index in self.map_checked.keys():
+            if self.map_checked[index]:
+                return False
+        return True
+        
+    def createCheckboxPanel(self):
+        #Add Checkboxes
+#        self.add_select_all()
+        self.add_documents()
+        self.add_emails()
+        self.add_media()
+        self.add_contacts()
+        self.add_bookmarks()
+        self.add_settings()
+        self.add_applications()            
+        
+#    def add_select_all(self):
+#        self.select_all = QCheckBox("Select All")
+#        self.connect(self.select_all, SIGNAL("stateChanged(int)"), 
+#                     self.select_all_func)
+#        self.grid.addWidget(self.select_all, 0, 0, Qt.AlignTop)          
+#    
+    def add_documents(self):
+        self.documents = QCheckBox("Documents")
+        self.documents.name = "documents"
+        callback = partial(self.select_func, self.documents)
+        self.connect(self.documents, SIGNAL("stateChanged(int)"), 
+                     callback)
+        self.grid.addWidget(self.documents, 1, 0, Qt.AlignTop)
+    
+    def add_emails(self):
+        self.emails = QCheckBox("Emails")
+        self.emails.name = "emails"
+        callback = partial(self.select_func, self.emails)
+        self.connect(self.emails, SIGNAL("stateChanged(int)"), 
+                     callback)
+        self.grid.addWidget(self.emails, 2, 0, Qt.AlignTop)
+    
+    def add_media(self):
+        self.media = QCheckBox("Media")
+        self.media.name = "media"
+        callback = partial(self.select_func, self.media)
+        self.connect(self.media, SIGNAL("stateChanged(int)"), 
+                     callback)
+        self.grid.addWidget(self.media, 3, 0, Qt.AlignTop)
+    
+    def add_contacts(self):
+        self.contacts = QCheckBox("Contacts")
+        self.contacts.name = "contacts"
+        callback = partial(self.select_func, self.contacts)
+        self.connect(self.contacts, SIGNAL("stateChanged(int)"), 
+                     callback)
+        self.grid.addWidget(self.contacts, 4, 0, Qt.AlignTop)
+    
+    def add_bookmarks(self):
+        self.bookmarks = QCheckBox("Bookmarks")
+        self.bookmarks.name = "bookmarks"
+        callback = partial(self.select_func, self.bookmarks)
+        self.connect(self.bookmarks, SIGNAL("stateChanged(int)"), 
+                     callback)
+        self.grid.addWidget(self.bookmarks, 5, 0, Qt.AlignTop)
+        
+    def add_settings(self):
+        self.settings = QCheckBox("Settings")
+        self.settings.name = "settings"
+        callback = partial(self.select_func, self.settings)
+        self.connect(self.settings, SIGNAL("stateChanged(int)"), 
+                     callback)
+        self.grid.addWidget(self.settings, 6, 0, Qt.AlignTop)
+
+    def add_applications(self):
+        self.applications = QCheckBox("Applications")
+        self.applications.name = "applications"
+        callback = partial(self.select_func, self.applications)
+        self.connect(self.applications, SIGNAL("stateChanged(int)"), 
+                     callback)
+        self.grid.addWidget(self.applications, 7, 0, Qt.AlignTop)
+
+#    def select_all_func(self):
+#        checked = self.select_all.isChecked()
+#        list = self.map_checked.keys()
+#        for element in list:
+#            self.map_checked[element] = checked
+#        for i in range(1,8):
+#            self.grid.itemAtPosition(i, 0).widget().setChecked(checked)
+#        
+    def select_func(self, checkbox):
+        checked = checkbox.isChecked()
+        self.map_checked[checkbox.name] = checked
+        if not checked:
+            list = []
+            for i in range(1,8):
+                item = self.grid.itemAtPosition(i, 0).widget()
+#                if item == self.select_all:
+#                    pass
+                if item.isChecked():
+                    list.append(item)
+#            self.select_all.setChecked(False)
+            for element in list:
+                element.setChecked(True)         
+        if self.empty_map():
+            self.enableNext.setText("")
+        else:
+            self.enableNext.setText("Next Button Enabled")
+            
+    def getCategories(self):
+        return self.map_checked
+        
+    def create_vertical_components(self):
+        deviceWidget = PcsDeviceWidget(2)
+        deviceWidget.setImage(DEVICE_DISCONNECTED)
+        deviceWidget.addBorder()
+        deviceWidget.addDeviceName()
+        deviceWidget.setDeviceInfo(self.deviceInfo)
+        self.vertical.addWidget(deviceWidget, Qt.AlignTop)
+        self.nextButton = QPushButton()
+        self.nextButton.setText("Next")
+        self.nextButton.setStyleSheet(BACKUP_BUTTON_STYLE)
+        self.connect(self.nextButton, SIGNAL("clicked()"), self._goNextPage)
+        self.vertical.addItem(QSpacerItem(0, 20))
+        buttonLayout = QHBoxLayout()
+        buttonLayout.addItem(QSpacerItem(5,0))
+        buttonLayout.addWidget(self.nextButton, Qt.AlignCenter)
+        self.vertical.addLayout(buttonLayout)
+        self.vertical.addItem(QSpacerItem(0,10))
+        
\ No newline at end of file