def __init__(self, parent=None): super(CalculatorForm, self).__init__(parent) self.currentTableState = VideoTableStates.EQUAL self.videoTableState = 3 self.url= C.QUrl.fromLocalFile("c:\Lazer.mp3") self.content= M.QMediaContent(self.url) self.player = M.QMediaPlayer() self.player.setMedia(self.content) self.ui = Ui_MainWindow() self.ui.setupUi(self) conn = sqlite3.connect('Youtube_MirrorV2.db') self.c = conn.cursor() self.c.execute('pragma foreign_keys = ON;') conn.commit() self.ui.tableWidgetVideos.setAlternatingRowColors(True) self.ui.tableWidgetChannels.setColumnCount(3) self.ui.tableWidgetChannels.horizontalHeader().setStretchLastSection(True) self.ui.tableWidgetChannels.setHorizontalHeaderLabels(('ID', 'Channel', 'No of Videos')) self.ui.tableWidgetChannels.verticalHeader().setVisible(False) self.ui.tableWidgetChannels.setSelectionBehavior(QAbstractItemView.SelectRows) self.ui.tableWidgetChannels.setEditTriggers(QAbstractItemView.NoEditTriggers) self.ui.tableWidgetChannels.cellClicked.connect(self.cell_was_clicked) self.ui.tableWidgetChannels.setColumnHidden(0, True) self.ui.tableWidgetChannels.setColumnWidth(1, 170) self.ui.tableWidgetVideos.setColumnCount(6) self.ui.tableWidgetVideos.setHorizontalHeaderLabels(('ID', 'Video Name', 'Video ID', "Status", "Upload Date", "Download Date")) self.ui.tableWidgetVideos.verticalHeader().setVisible(False) self.ui.tableWidgetVideos.setSelectionBehavior(QAbstractItemView.SelectRows) self.ui.tableWidgetVideos.setEditTriggers(QAbstractItemView.NoEditTriggers) self.ui.tableWidgetVideos.cellClicked.connect(self.videocell_was_clicked) self.ui.tableWidgetVideos.setColumnWidth(1, 300) self.ui.tableWidgetVideos.setColumnWidth(4, 150) self.ui.tableWidgetVideos.horizontalHeader().setStretchLastSection(True) self.ui.tableWidgetVideos.setColumnHidden(0, True) self.ui.btnResizeUp.setIcon(self.style().standardIcon(QStyle.SP_ArrowUp)) self.ui.btnResizeDown.setIcon(self.style().standardIcon(QStyle.SP_ArrowDown)) self.ui.toolButtonRefresh.setIcon(self.style().standardIcon(QStyle.SP_BrowserReload)) self.ui.btnResizeUp.clicked.connect(self.btnResizeUp_pressed) self.ui.btnResizeDown.clicked.connect(self.btnResizeDown_pressed) self.ui.pushButtonAdd.clicked.connect(self.pushButtonAdd_pressed)
class CalculatorForm(QMainWindow): def __init__(self, parent=None): super(CalculatorForm, self).__init__(parent) self.currentTableState = VideoTableStates.EQUAL self.videoTableState = 3 self.url= C.QUrl.fromLocalFile("c:\Lazer.mp3") self.content= M.QMediaContent(self.url) self.player = M.QMediaPlayer() self.player.setMedia(self.content) self.ui = Ui_MainWindow() self.ui.setupUi(self) conn = sqlite3.connect('Youtube_MirrorV2.db') self.c = conn.cursor() self.c.execute('pragma foreign_keys = ON;') conn.commit() self.ui.tableWidgetVideos.setAlternatingRowColors(True) self.ui.tableWidgetChannels.setColumnCount(3) self.ui.tableWidgetChannels.horizontalHeader().setStretchLastSection(True) self.ui.tableWidgetChannels.setHorizontalHeaderLabels(('ID', 'Channel', 'No of Videos')) self.ui.tableWidgetChannels.verticalHeader().setVisible(False) self.ui.tableWidgetChannels.setSelectionBehavior(QAbstractItemView.SelectRows) self.ui.tableWidgetChannels.setEditTriggers(QAbstractItemView.NoEditTriggers) self.ui.tableWidgetChannels.cellClicked.connect(self.cell_was_clicked) self.ui.tableWidgetChannels.setColumnHidden(0, True) self.ui.tableWidgetChannels.setColumnWidth(1, 170) self.ui.tableWidgetVideos.setColumnCount(6) self.ui.tableWidgetVideos.setHorizontalHeaderLabels(('ID', 'Video Name', 'Video ID', "Status", "Upload Date", "Download Date")) self.ui.tableWidgetVideos.verticalHeader().setVisible(False) self.ui.tableWidgetVideos.setSelectionBehavior(QAbstractItemView.SelectRows) self.ui.tableWidgetVideos.setEditTriggers(QAbstractItemView.NoEditTriggers) self.ui.tableWidgetVideos.cellClicked.connect(self.videocell_was_clicked) self.ui.tableWidgetVideos.setColumnWidth(1, 300) self.ui.tableWidgetVideos.setColumnWidth(4, 150) self.ui.tableWidgetVideos.horizontalHeader().setStretchLastSection(True) self.ui.tableWidgetVideos.setColumnHidden(0, True) self.ui.btnResizeUp.setIcon(self.style().standardIcon(QStyle.SP_ArrowUp)) self.ui.btnResizeDown.setIcon(self.style().standardIcon(QStyle.SP_ArrowDown)) self.ui.toolButtonRefresh.setIcon(self.style().standardIcon(QStyle.SP_BrowserReload)) self.ui.btnResizeUp.clicked.connect(self.btnResizeUp_pressed) self.ui.btnResizeDown.clicked.connect(self.btnResizeDown_pressed) self.ui.pushButtonAdd.clicked.connect(self.pushButtonAdd_pressed) #self.style().standardIcon(QStyle.SP_MediaSkipForward))btnResizeUp def load_initial_data(self): # where c is the cursor self.c.execute('''SELECT * FROM channel''') channel_rows = self.c.fetchall() for channel_row in channel_rows: inx = channel_rows.index(channel_row) self.ui.tableWidgetChannels.insertRow(inx) # add more if there is more columns in the database. self.c.execute('''SELECT count(id) FROM video WHERE channelId IS ''' + str(channel_row[0])) video_count = self.c.fetchall()[0][0] self.ui.tableWidgetChannels.setItem(inx, 0, QTableWidgetItem(str(channel_row[0]))) self.ui.tableWidgetChannels.setItem(inx, 1, QTableWidgetItem(channel_row[1])) self.ui.tableWidgetChannels.setItem(inx, 2, QTableWidgetItem(str(video_count) )) def getSameRowCell(self, widget, columnName): row = widget.currentItem().row() #loop through headers and find column number for given column name headerCount = widget.columnCount() for x in range(0,headerCount,1): headerText = widget.horizontalHeaderItem(x).text() if columnName == headerText: matchCol = x break cell = widget.item(row,matchCol).text() # get cell at row, col return cell @pyqtSlot() def pushButtonAdd_pressed(self): pass @pyqtSlot() # prevents executing following function twice def cell_was_clicked(self): self.ui.tableWidgetVideos.clearContents() self.ui.tableWidgetVideos.setRowCount(0) clickedChannelId = self.getSameRowCell(widget = self.ui.tableWidgetChannels, columnName="ID") self.c.execute('''SELECT * FROM video WHERE channelId IS ''' + str(clickedChannelId)) video_rows = self.c.fetchall() #self.player.play() #self.player.stateChanged.connect( self.player.stop() ) for video_row in video_rows: inx = video_rows.index(video_row) self.ui.tableWidgetVideos.insertRow(inx) self.ui.tableWidgetVideos.setItem(inx, 0, QTableWidgetItem(str(video_row[0]))) # Video ID self.ui.tableWidgetVideos.setItem(inx, 1, QTableWidgetItem(video_row[4])) # Video Name self.ui.tableWidgetVideos.setItem(inx, 2, QTableWidgetItem(video_row[2])) # Video ID self.ui.tableWidgetVideos.setItem(inx, 3, QTableWidgetItem(video_row[3])) # Status self.ui.tableWidgetVideos.setItem(inx, 4, QTableWidgetItem(datetime.datetime.fromtimestamp( int(video_row[6]) ).strftime('%Y-%m-%d %H:%M:%S'))) # Upload Date self.ui.tableWidgetVideos.setItem(inx, 5, QTableWidgetItem(datetime.datetime.fromtimestamp( int(video_row[7]) ).strftime('%Y-%m-%d %H:%M:%S'))) # Download Date @pyqtSlot() # prevents executing following function twice def videocell_was_clicked(self): clickedVideoId = self.getSameRowCell(widget = self.ui.tableWidgetVideos, columnName="ID") self.c.execute('''SELECT * FROM video WHERE id IS ''' + str(clickedVideoId)) video_row = self.c.fetchall()[0] self.ui.txtName.setText(video_row[4]) self.ui.txtDesc.setText(video_row[5]) self.ui.txtLLocalLocation.setText(video_row[8]) self.ui.txtUploadDate.setText(datetime.datetime.fromtimestamp( int(video_row[6]) ).strftime('%Y-%m-%d %H:%M:%S')) self.ui.txtDownloadDate.setText(datetime.datetime.fromtimestamp( int(video_row[7]) ).strftime('%Y-%m-%d %H:%M:%S')) player.playlist.clear() newfiles = [video_row[8]] player.addToPlaylist(newfiles) self.ui.mainVideoContainer.sizeConstrain = QLayout.SetMinimumSize @pyqtSlot() def btnResizeUp_pressed(self): if self.currentTableState == VideoTableStates.VIDLISTMIN: pass elif self.currentTableState == VideoTableStates.VIDLISTSMALL: self.ui.tableWidgetVideos.setMaximumHeight(100) self.ui.tableWidgetVideos.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self.currentTableState = VideoTableStates.VIDLISTMIN elif self.currentTableState == VideoTableStates.EQUAL: self.ui.tableWidgetVideos.setMaximumHeight(200) self.ui.tableWidgetVideos.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self.currentTableState = VideoTableStates.VIDLISTSMALL elif self.currentTableState == VideoTableStates.VIDDATASMALL: self.ui.groupBox.setMaximumHeight(10000) player.setMaximumHeight(10000) self.ui.tableWidgetVideos.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.currentTableState = VideoTableStates.EQUAL @pyqtSlot() def btnResizeDown_pressed(self): if self.currentTableState == VideoTableStates.VIDLISTMIN: self.ui.tableWidgetVideos.setMaximumHeight(200) self.ui.tableWidgetVideos.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self.currentTableState = VideoTableStates.VIDLISTSMALL elif self.currentTableState == VideoTableStates.VIDLISTSMALL: self.ui.tableWidgetVideos.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.ui.tableWidgetVideos.setMaximumHeight(10000) self.currentTableState = VideoTableStates.EQUAL elif self.currentTableState == VideoTableStates.EQUAL: self.ui.groupBox.setMaximumHeight(200) player.setMaximumHeight(200) self.ui.tableWidgetVideos.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.currentTableState = VideoTableStates.VIDDATASMALL