--- /dev/null
+# 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