# Authors: Amaury Medeiros, Nicholas Alexander and Paulo Ouriques # Software License: GPL from functools import partial from PyQt4.QtCore import * from PyQt4.QtGui import * from style.styleTabletSuite import * from ui.pcsdevicewidget import PcsDeviceWidget from ui.pcsuiutils import * class PcsRestoreDialog(QDialog): def __init__(self, deviceInfo, categoriesList, parent = None): QDialog.__init__(self, parent, Qt.FramelessWindowHint) self.setWindowTitle("%s Restore Backup" % APPLICATION_NAME) self.setFixedSize(200, 300) self.deviceInfo = deviceInfo self.categories = categoriesList self.validPositions = [] self.validCategories = [] self.layout = QVBoxLayout() self.labelLayout = QHBoxLayout() spc = QSpacerItem(15, 0) self.labelLayout.addItem(spc) label = QLabel("Which categories you want to restore?") label.setWordWrap(True) self.labelLayout.addWidget(label) self.labelLayout.setMargin(0) self.layout.addLayout(self.labelLayout) # self.grid = QGridLayout() # self.create_dialog() # self.grid.setMargin(0) # self.layout.addLayout(self.grid) self.create_checkbox_frame() self.buttonLayout = QHBoxLayout() self.create_buttons() self.buttonLayout.setMargin(0) self.layout.addLayout(self.buttonLayout) 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} def empty_map(self): for index in self.map_checked.keys(): if self.map_checked[index]: return False return True def create_buttons(self): self.buttonOk = QPushButton("Ok") self.buttonOk.setStyleSheet(DEFAULT_BUTTON_STYLE) self.buttonLayout.addWidget(self.buttonOk) self.buttonCancel = QPushButton("Cancel") self.buttonCancel.setStyleSheet(DEFAULT_BUTTON_STYLE) self.buttonLayout.addWidget(self.buttonCancel) def create_checkbox_frame(self): layout = QVBoxLayout() l = QLabel() l.setPixmap(QPixmap(COPY_BORDER)) self.frame = QScrollArea(self) self.frame.setObjectName("restoreScroll") self.frame.setWidgetResizable(True) widget = QWidget(self.frame) widget.setStyleSheet("QWidget{background: transparent;}") self.grid = QGridLayout() self.grid.setSpacing(0) self.create_dialog() widget.setLayout(self.grid) self.frame.setWidget(widget) layout.addWidget(self.frame) self.layout.addLayout(layout) def create_dialog(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.validPositions.append((1,0)) # self.grid.addWidget(self.select_all, 1, 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) if "documents" in self.categories: self.validPositions.append((2, 0)) self.grid.addWidget(self.documents, 2, 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) if "emails" in self.categories: self.validPositions.append((3, 0)) self.grid.addWidget(self.emails, 3, 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) if "media" in self.categories: self.validPositions.append((4, 0)) self.grid.addWidget(self.media, 4, 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) if "contacts" in self.categories: self.validPositions.append((5, 0)) self.grid.addWidget(self.contacts, 5, 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) if "bookmarks" in self.categories: self.validPositions.append((6, 0)) self.grid.addWidget(self.bookmarks, 6, 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) if "settings" in self.categories: self.validPositions.append((7, 0)) self.grid.addWidget(self.settings, 7, 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) if "applications" in self.categories: self.validPositions.append((8, 0)) self.grid.addWidget(self.applications, 8, 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 tuple in self.validPositions: # self.grid.itemAtPosition(tuple[0], tuple[1]).widget().setChecked(checked) # def select_func(self, checkbox): checked = checkbox.isChecked() self.map_checked[checkbox.name] = checked if not checked: list = [] for tuple in self.validPositions: item = self.grid.itemAtPosition(tuple[0], tuple[1]).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) def getCategories(self): return self.map_checked