self.play_wh = QImage(QPixmap("icon/play_white.png"))
self.pause_wh = QImage(QPixmap("icon/pause_white.png"))
self.light_bulb = QImage(QPixmap("icon/light-bulb.png"))
self.ot_light = QImage(QPixmap("icon/lights.png"))
self.on_speaker = QImage(QPixmap("icon/speaker-on-white.png"))
self.off_speaker = QImage(QPixmap("icon/speaker-off-white.png"))
play_qpixmap_image = self.changedQPixMapColorImage(self.play_wh)
pause_qpixmap_image = self.changedQPixMapColorImage(self.pause_wh)
play_qpixmap_byte = self.convertQPixMapToByteArray(play_qpixmap_image)
pause_qpixmap_byte = self.convertQPixMapToByteArray(pause_qpixmap_image)
Â
def convertQPixMapToByteArray(self, pixmap):
ba = QByteArray()
buff = QBuffer(ba)
buff.open(QIODevice.WriteOnly)
ok = pixmap.save(buff, "PNG")
assert ok
pixmap_bytes = ba
# pixmap_bytes = ba.data()
return pixmap_bytes
# print("PIX_MAP_BYTE" + str(pixmap_bytes))
def changedQPixMapColorImage(self, image):
self.image = image
for x in range(self.image.width()):
for y in range(self.image.height()):
pcolor = self.image.pixelColor(x, y)
if pcolor.alpha() > 0:
n_color = QColor(self.datamodel.get_icon_col())
n_color.setAlpha(pcolor.alpha())
self.image.setPixelColor(x, y, n_color)
return QPixmap.fromImage(self.image)
# attribute_name.setIconSize(QSize(31, 31))
# attribute_name.setIcon(QIcon(QPixmap.fromImage(self.image)))
Â
dataModel.py
Â
class DataModel:
def __init__(self):
# +++++++++++++++++++++++++++ Image byte array variable ++++++++++++++++++
self._changed_light_bulb = bytearray
self._changed_ot_light = bytearray
self._low_light_bulb = bytearray
self._low_ot_light = bytearray
self._changed_low_color = str()
self._changed_play = bytearray
self._changed_pause = bytearray
self._changed_on_speaker = bytearray
self._changed_off_speaker = bytearray
# +++++++++++++++++++++++ Store QPixMap Image in Database ++++++++++++++++++++
def set_changed_light_bulb(self, _changed_light_bulb):
self._changed_light_bulb = _changed_light_bulb
def get_changed_light_bulb(self):
return self._changed_light_bulb
def set_changed_ot_light(self, _changed_ot_light):
self._changed_ot_light = _changed_ot_light
def get_changed_ot_light(self):
return self._changed_ot_light
def set_low_light_bulb(self, _low_light_bulb):
self._low_light_bulb = _low_light_bulb
def get_low_light_bulb(self):
return self._low_light_bulb
def set_low_ot_light(self, _low_ot_light):
self._low_ot_light = _low_ot_light
def get_low_ot_light(self):
return self._low_ot_light
def set_changed_low_color(self, _changed_low_color):
self._changed_low_color = _changed_low_color
def get_changed_low_color(self):
return self._changed_low_color
def set_changed_play(self, _changed_play):
self._changed_play = _changed_play
def get_changed_play(self):
return self._changed_play
def set_changed_pause(self, _changed_pause):
self._changed_pause = _changed_pause
def get_changed_pause(self):
return self._changed_pause
def set_changed_on_speaker(self, _changed_on_speaker):
self._changed_on_speaker = _changed_on_speaker
def get_changed_on_speaker(self):
return self._changed_on_speaker
def set_changed_off_speaker(self, _changed_off_speaker):
self._changed_off_speaker = _changed_off_speaker
def get_changed_off_speaker(self):
return self._changed_off_speaker
database.py
import datetime
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QMessageBox, QTableWidgetItem
import configVariables
class LightSwitchDataBase:
def __init__(self, ui):
configVariables.db = ""
configVariables.db_history = ""
def insertPixMapByteArray(self, datamodel):
changed_light_bulb = datamodel.get_changed_light_bulb()
changed_ot_light = datamodel.get_changed_ot_light()
low_light_bulb = datamodel.get_low_light_bulb()
low_ot_light = datamodel.get_low_ot_light()
changed_low_color = datamodel.get_changed_low_color()
play_pixmap_byte = datamodel.get_changed_play()
pause_pixmap_byte = datamodel.get_changed_pause()
on_speaker_byte = datamodel.get_changed_on_speaker()
off_speaker_byte = datamodel.get_changed_off_speaker()
# print("Changed Light Bulb: "+str(changed_light_bulb))
# print("Changed Low Light Color: " + str(changed_low_color))
query = QSqlQuery(configVariables.db_history)
# query.exec_(f"""insert into image_table( changed_light_bulb)
# values( '{ckjk}')""")
query.prepare("INSERT INTO image_table (changed_light_bulb, changed_ot_light, "
"low_light_bulb, low_ot_light, changed_low_color, play_wh, pause_wh, on_speaker, off_speaker) "
"VALUES ( :changed_light_bulb, :changed_ot_light, :low_light_bulb,"
" :low_ot_light, :changed_low_color, :play_wh, :pause_wh, :on_speaker, :off_speaker)")
query.bindValue(":changed_light_bulb", changed_light_bulb)
query.bindValue(":changed_ot_light", changed_ot_light)
query.bindValue(":low_light_bulb", low_light_bulb)
query.bindValue(":low_ot_light", low_ot_light)
query.bindValue(":changed_low_color", changed_low_color)
query.bindValue(":play_wh", play_pixmap_byte)
query.bindValue(":pause_wh", pause_pixmap_byte)
query.bindValue(":on_speaker", on_speaker_byte)
query.bindValue(":off_speaker", off_speaker_byte)
if not query.exec():
qDebug() << "Error inserting image into table:\n" << query.lastError()
def updatePixMapByteArray(self, datamodel):
changed_light_bulb = datamodel.get_changed_light_bulb()
changed_ot_light = datamodel.get_changed_ot_light()
low_light_bulb = datamodel.get_low_light_bulb()
low_ot_light = datamodel.get_low_ot_light()
changed_low_color = datamodel.get_changed_low_color()
play_pixmap_byte = datamodel.get_changed_play()
pause_pixmap_byte = datamodel.get_changed_pause()
on_speaker_byte = datamodel.get_changed_on_speaker()
off_speaker_byte = datamodel.get_changed_off_speaker()
# print("Changed Light Bulb: "+str(changed_light_bulb))
# print("Changed Low Light Color: " + str(changed_low_color))
query = QSqlQuery(configVariables.db_history)
# query.exec_(f"""insert into image_table( changed_light_bulb)
# values( '{ckjk}')""")
# query.prepare('UPDATE "%s" SET value=:val WHERE property=:var' % tbl)
query.prepare('UPDATE image_table SET changed_light_bulb=:changed_light_bulb,'
' changed_ot_light=:changed_ot_light, low_light_bulb=:low_light_bulb,'
' low_ot_light=:low_ot_light, changed_low_color=:changed_low_color, '
'play_wh=:play_wh, pause_wh=:pause_wh, on_speaker=:on_speaker, off_speaker=:off_speaker'
' WHERE id=:var')
query.bindValue(":changed_light_bulb", changed_light_bulb)
query.bindValue(":changed_ot_light", changed_ot_light)
query.bindValue(":low_light_bulb", low_light_bulb)
query.bindValue(":low_ot_light", low_ot_light)
query.bindValue(":changed_low_color", changed_low_color)
query.bindValue(":play_wh", play_pixmap_byte)
query.bindValue(":pause_wh", pause_pixmap_byte)
query.bindValue(":on_speaker", on_speaker_byte)
query.bindValue(":off_speaker", off_speaker_byte)
query.bindValue(':var', 1)
if not query.exec():
qDebug() << "Error updating image into table:\n" << query.lastError()
def queryChangedIconColorData(self, model):
query = QSqlQuery(configVariables.db_history)
query.exec_("SELECT * FROM image_table where 1")
while query.next():
# print(query.value('theme_color_preview'))
model.set_changed_light_bulb(query.value('changed_light_bulb'))
model.set_changed_ot_light(query.value('changed_ot_light'))
model.set_low_light_bulb(query.value('low_light_bulb'))
model.set_low_ot_light(query.value('low_ot_light'))
model.set_changed_low_color(query.value('changed_low_color'))
model.set_changed_play(query.value('play_wh'))
model.set_changed_pause(query.value('pause_wh'))
model.set_changed_on_speaker(query.value('on_speaker'))
model.set_changed_off_speaker(query.value('off_speaker'))
def db_connect(self, filename, server, connection):
configVariables.db = QSqlDatabase.addDatabase(server, connection)
configVariables.db.setDatabaseName(filename)
configVariables.db_history = configVariables.db.database("history", open=True)
# configVariables.db_image = configVariables.db.database("image_con", open=True)
# self.db_history = self.db.database("history", open=True)
if not configVariables.db_history.open():
QMessageBox.critical(None, "Cannot open database",
"Unable to establish a database connection.\n"
"This example needs SQLite support. Please read the Qt SQL "
"driver documentation for information how to build it.\n\n"
"Click Cancel to exit.", QMessageBox.Cancel)
return False
return True
def db_create(self):
query = QSqlQuery(configVariables.db_history)
query.exec_("create table image_table(id INTEGER PRIMARY KEY , "
"play_wh BLOB, pause_wh BLOB, changed_light_bulb BLOB,"
"changed_ot_light BLOB, low_light_bulb BLOB, low_ot_light BLOB,"
"on_speaker BLOB, off_speaker BLOB,"
"changed_low_color varchar(80))")
Â
Comments