1 # Authors: Amaury Medeiros and Paulo Ouriques
2 # Software License: GPL
4 from functools import partial
6 from PyQt4.QtCore import *
7 from PyQt4.QtGui import *
9 from ui.pcsbutton import *
10 from ui.pcsdevicewidget import PcsDeviceWidget
11 from ui.pcscustombuttons import PcsCustomButton as customButton
12 from ui.pcsuiutils import *
13 from style.styleTabletSuite import *
14 from pcsbackupmanagerui import *
15 from pcsrestorebackupui import *
17 class PcsCheckboxWizard(QWizardPage):
19 def __init__(self, deviceInfo, windowManager, parent = None):
20 QWizardPage.__init__(self, parent)
21 self.deviceInfo = deviceInfo
22 self.windowManager = windowManager
24 self.layout = QVBoxLayout()
25 self.layout.setMargin(0)
26 self.layout.setSpacing(0)
27 buttonsLayout = self._menuButtons()
28 self.layout.addLayout(buttonsLayout)
29 self.layout.addItem(QSpacerItem(0, 8))
30 wayLayout = self._wayLayout()
31 self.layout.addLayout(wayLayout)
33 self.layout.addItem(QSpacerItem(0, 10))
35 self.hlayout = QHBoxLayout()
36 self.hlayout.setMargin(0)
38 self.vertical = QVBoxLayout()
39 self.vertical.setMargin(0)
40 self.vertical.setSpacing(0)
41 self.create_vertical_components()
42 self.hlayout.addLayout(self.vertical)
43 self.hlayout.setMargin(0)
44 self.hlayout.setSpacing(0)
46 self.create_checkbox_frame()
47 # self.hlayout.addItem(QSpacerItem(30, 0))
48 self.layout.addLayout(self.hlayout)
50 self.layout.addItem(QSpacerItem(0, 35))
51 informationLayout = QHBoxLayout()
52 informationLayout.setMargin(0)
53 spc = QSpacerItem(10, 0)
55 iconAlert.setPixmap(QPixmap(ICON_ALERT))
56 information = QLabel("<font style='color:"\
58 "Select the types of file you wish to backup.</font>")
59 informationLayout.addItem(spc)
60 informationLayout.addWidget(iconAlert)
61 informationLayout.addWidget(information, Qt.AlignLeft)
63 self.layout.addLayout(informationLayout)
65 self.setLayout(self.layout)
66 self.map_checked = {self.documents.name: False,
67 self.emails.name: False, self.media.name: False,
68 self.contacts.name: False,
69 self.bookmarks.name: False,
70 self.settings.name: False,
71 self.applications.name: False}
72 self.enableNext = QLineEdit()
73 self.registerField("enableNext*", self.enableNext)
76 barLayout = QHBoxLayout()
77 barLayout.setMargin(0)
78 main = QLabel("<font style='color: #333333'; size=2>Main</font>")
80 arrow2 = self._arrow()
81 spc = QSpacerItem(5, 0)
82 newBackup = QLabel("<font style='color: #333333'; size=2> New Backup</font>")
83 files = QLabel("<font style='color: #FFFFFF'; size=2>Files</font>")
84 widgetList = [main, arrow, newBackup, arrow2, files]
85 for widget in widgetList:
86 barLayout.addWidget(widget, Qt.AlignLeft)
87 barLayout.addItem(spc)
88 barLayout.addItem(QSpacerItem(300, 0))
93 label.setPixmap(QPixmap(BLACK_ARROW))
96 def _menuButtons(self):
97 infList = [("New Backup", SMALL_ICON_NEW_BACKUP_STYLE_SELECTED),
98 ("Manage Backup", SMALL_ICON_MANAGER_BACKUP_STYLE, self._manageDialog),
99 ("Restore Backup", SMALL_ICON_RESTORE_BACKUP_STYLE, self._restoreDialog)]
100 buttonsLayout = QHBoxLayout()
101 buttonsLayout.setMargin(0)
103 but = QPushButton(infList[i][0])
104 but.setStyleSheet(infList[i][1])
106 buttonsLayout.addWidget(but, Qt.AlignLeft)
107 self.connect(but, SIGNAL("clicked()"), infList[i][2])
109 buttonsLayout.addWidget(but)
112 def _manageDialog(self):
113 if(self.deviceInfo and self.deviceInfo.ip != None):
114 backupManager = self.windowManager.getBackupManager()
115 centralize(backupManager)
116 backupManager.setGeometry(self.wizard().geometry())
118 self.wizard().close()
121 self._showNoDeviceFoundMessage()
123 def _restoreDialog(self):
124 if(self.deviceInfo and self.deviceInfo.ip != None):
125 restoreBackup = self.windowManager.getRestoreBackup()
126 centralize(restoreBackup)
127 restoreBackup.setGeometry(self.wizard().geometry())
129 self.wizard().close()
132 self._showNoDeviceFoundMessage()
134 def _goNextPage(self):
141 def _showNoDeviceFoundMessage(self):
142 inf = QMessageBox(self)
143 inf.setWindowTitle("Connect a device.")
144 inf.setText("No devices were found.")
147 def create_checkbox_frame(self):
148 layout = QVBoxLayout()
150 l.setPixmap(QPixmap(COPY_BORDER))
152 self.frame = QScrollArea(self)
153 self.frame.setWidgetResizable(True)
154 widget = QWidget(self.frame)
155 widget.setStyleSheet("QWidget{background: transparent;}")
156 self.grid = QGridLayout()
157 self.grid.setSpacing(0)
158 self.createCheckboxPanel()
159 widget.setLayout(self.grid)
160 self.frame.setWidget(widget)
161 layout.addItem(QSpacerItem(0,25))
162 layout.addWidget(self.frame)
163 self.hlayout.addLayout(layout)
167 for index in self.map_checked.keys():
168 if self.map_checked[index]:
172 def createCheckboxPanel(self):
174 # self.add_select_all()
181 self.add_applications()
183 # def add_select_all(self):
184 # self.select_all = QCheckBox("Select All")
185 # self.connect(self.select_all, SIGNAL("stateChanged(int)"),
186 # self.select_all_func)
187 # self.grid.addWidget(self.select_all, 0, 0, Qt.AlignTop)
189 def add_documents(self):
190 self.documents = QCheckBox("Documents")
191 self.documents.name = "documents"
192 callback = partial(self.select_func, self.documents)
193 self.connect(self.documents, SIGNAL("stateChanged(int)"),
195 self.grid.addWidget(self.documents, 1, 0, Qt.AlignTop)
197 def add_emails(self):
198 self.emails = QCheckBox("Emails")
199 self.emails.name = "emails"
200 callback = partial(self.select_func, self.emails)
201 self.connect(self.emails, SIGNAL("stateChanged(int)"),
203 self.grid.addWidget(self.emails, 2, 0, Qt.AlignTop)
206 self.media = QCheckBox("Media")
207 self.media.name = "media"
208 callback = partial(self.select_func, self.media)
209 self.connect(self.media, SIGNAL("stateChanged(int)"),
211 self.grid.addWidget(self.media, 3, 0, Qt.AlignTop)
213 def add_contacts(self):
214 self.contacts = QCheckBox("Contacts")
215 self.contacts.name = "contacts"
216 callback = partial(self.select_func, self.contacts)
217 self.connect(self.contacts, SIGNAL("stateChanged(int)"),
219 self.grid.addWidget(self.contacts, 4, 0, Qt.AlignTop)
221 def add_bookmarks(self):
222 self.bookmarks = QCheckBox("Bookmarks")
223 self.bookmarks.name = "bookmarks"
224 callback = partial(self.select_func, self.bookmarks)
225 self.connect(self.bookmarks, SIGNAL("stateChanged(int)"),
227 self.grid.addWidget(self.bookmarks, 5, 0, Qt.AlignTop)
229 def add_settings(self):
230 self.settings = QCheckBox("Settings")
231 self.settings.name = "settings"
232 callback = partial(self.select_func, self.settings)
233 self.connect(self.settings, SIGNAL("stateChanged(int)"),
235 self.grid.addWidget(self.settings, 6, 0, Qt.AlignTop)
237 def add_applications(self):
238 self.applications = QCheckBox("Applications")
239 self.applications.name = "applications"
240 callback = partial(self.select_func, self.applications)
241 self.connect(self.applications, SIGNAL("stateChanged(int)"),
243 self.grid.addWidget(self.applications, 7, 0, Qt.AlignTop)
245 # def select_all_func(self):
246 # checked = self.select_all.isChecked()
247 # list = self.map_checked.keys()
248 # for element in list:
249 # self.map_checked[element] = checked
250 # for i in range(1,8):
251 # self.grid.itemAtPosition(i, 0).widget().setChecked(checked)
253 def select_func(self, checkbox):
254 checked = checkbox.isChecked()
255 self.map_checked[checkbox.name] = checked
259 item = self.grid.itemAtPosition(i, 0).widget()
260 # if item == self.select_all:
264 # self.select_all.setChecked(False)
266 element.setChecked(True)
268 self.enableNext.setText("")
270 self.enableNext.setText("Next Button Enabled")
272 def getCategories(self):
273 return self.map_checked
275 def create_vertical_components(self):
276 deviceWidget = PcsDeviceWidget(2)
277 deviceWidget.setImage(DEVICE_DISCONNECTED)
278 deviceWidget.addBorder()
279 deviceWidget.addDeviceName()
280 deviceWidget.setDeviceInfo(self.deviceInfo)
281 self.vertical.addWidget(deviceWidget, Qt.AlignTop)
282 self.nextButton = QPushButton()
283 self.nextButton.setText("Next")
284 self.nextButton.setStyleSheet(BACKUP_BUTTON_STYLE)
285 self.connect(self.nextButton, SIGNAL("clicked()"), self._goNextPage)
286 self.vertical.addItem(QSpacerItem(0, 20))
287 buttonLayout = QHBoxLayout()
288 buttonLayout.addItem(QSpacerItem(5,0))
289 buttonLayout.addWidget(self.nextButton, Qt.AlignCenter)
290 self.vertical.addLayout(buttonLayout)
291 self.vertical.addItem(QSpacerItem(0,10))