class Main: def __init__(self): self.connectDatabase() self.loginPage() self.playlistPage() self.playlist = Playlist(self.conn) #데이터베이스 연결 def connectDatabase(self): self.conn = sqlite3.connect("week8.db") self.cur = self.conn.cursor() #초기페이지 def loginPage(self): ui.stackedWidget.setCurrentIndex(0) ui.regist_exitButton.clicked.connect(lambda: self.registWindow(True)) ui.registButton.clicked.connect(lambda: self.registWindow(False)) ui.regist_registButton.clicked.connect(self.registrate) ui.logInButton.clicked.connect(self.loginProcess) def registWindow(self, a): ui.opacityWidget.setHidden(a) ui.registWidget.setHidden(a) def loginProcess(self): self.id = ui.log_idInput.text() password = ui.log_passInput.text() self.login = Login(self.conn) self.login.checkResult(self.id, password) if self.login.loginResult == 1: ui.stackedWidget.setCurrentIndex(1) self.showList() elif self.login.loginResult == 2: self.login_alarm("아이디 혹은 비밀번호를 다시 입력해주세요") #아이디 알림 def login_alarm(self, text): ui.log_alarm.setHidden(False) ui.log_okButton.clicked.connect(lambda: ui.log_alarm.setHidden(True)) ui.log_text.setText(text) #회원가입 def registrate(self): regist_id = ui.regist_idInput.text() regist_pass = ui.regist_passInput.text() regist_pass2 = ui.regist_passInput2.text() registration = Registration(self.conn) registration.checkWantId(regist_id) if regist_id == '' or regist_pass == '': self.regist_alarm("아이디 비밀번호를 입력해주세요") else: if registration.checkWantIdResult == True: self.regist_alarm("아이디 중복체크를 다시 해주세요") elif registration.checkWantIdResult == False and regist_pass != regist_pass2: self.regist_alarm("비밀번호을 다시 확인 해주세요") elif registration.checkWantIdResult == False and regist_pass == regist_pass2: registration.addUserInfo(regist_id, regist_pass) self.registWindow(True) ui.regist_idInput.setText('') ui.regist_passInput.setText('') ui.regist_passInput2.setText('') self.login_alarm("회원가입 성공") #회원가입 알림창 def regist_alarm(self, text): ui.regist_alarm.setHidden(False) ui.regist_text.setText(text) ui.regist_okButton.clicked.connect( lambda: ui.regist_alarm.setHidden(True)) #재생목록 def playlistPage(self): ui.logoutButton.clicked.connect(self.logout) ui.addPlaylistButton.clicked.connect( lambda: self.addPlaylistWindow(False)) ui.addListWidget_close.clicked.connect( lambda: self.addPlaylistWindow(True)) ui.addListWidget_add.clicked.connect(self.addPlaylist) ui.addUrlWidget_close.clicked.connect(lambda: self.addUrlWindow(True)) #로그아웃 def logout(self): ui.log_passInput.setText('') ui.log_idInput.setText('') ui.stackedWidget.setCurrentIndex(0) #플레이리스트 생성 def addPlaylistWindow(self, a): ui.opacityWidget2.setHidden(a) ui.addListWidget.setHidden(a) ui.addListWidget_name.setText('') def addPlaylist(self): wantPlaylistName = ui.addListWidget_name.text() if wantPlaylistName == '': self.playlist_alarm("이름을 입력하세요") else: self.playlist.addDataToDatabase(self.id, wantPlaylistName) if self.playlist.checkResult == True: self.playlist_alarm("재생목록 생성 완료") self.showList() elif self.playlist.checkResult == False: self.playlist_alarm("이미 존재하는 이름입니다") #플레이리스트 알림창 def playlist_alarm(self, text): ui.addList_alarm.setHidden(False) ui.addList_text.setText(text) ui.addList_okButton.clicked.connect( lambda: ui.addList_alarm.setHidden(True)) #플레이리스트 LISTVIEW def showList(self): self.playlist.getPlaylist(self.id) model = QtGui.QStandardItemModel(ui.playlistView) ui.playlistView.setModel(model) self.produceButton() for j in range(0, len(self.playlist.playlists)): item = QtGui.QStandardItem(self.playlist.playlists[j][0]) item.setSizeHint(QtCore.QSize(640, 80)) model.appendRow(item) ui.playlistView.setIndexWidget(item.index(), self.playlistWidget[j]) #버튼 생성 def produceButton(self): self.listButtons = [] self.plusButtons = [] self.playlistWidget = [] for i in range(0, len(self.playlist.playlists)): self.playlistWidget.append(QtWidgets.QWidget()) self.listButtons.append( QtWidgets.QPushButton(self.playlistWidget[i])) self.listButtons[i].setText(self.playlist.playlists[i][0]) self.listButtons[i].setStyleSheet(ui.listViewStlye) self.listButtons[i].setGeometry(QtCore.QRect(45, 10, 571, 61)) self.listButtons[i].clicked.connect( lambda state, x=i: self.clickListButton(state, x)) self.plusButtons.append( QtWidgets.QPushButton(self.playlistWidget[i])) self.plusButtons[i].setIcon(QtGui.QIcon(ui.plusIcon)) self.plusButtons[i].setStyleSheet(ui.listViewStlye) self.plusButtons[i].setGeometry(QtCore.QRect(620, 10, 71, 61)) self.plusButtons[i].clicked.connect( lambda state, x=i: self.clickPlusButton(state, x)) #i가 인식이 안댐 state #영상 추가창 def addUrlWindow(self, hidden): ui.opacityWidget2.setHidden(hidden) ui.addUrlWidget.setHidden(hidden) ui.addUrlWidget_name.setText('') def clickPlusButton(self, state, index1): self.addUrlWindow(False) self.playlistName = self.playlist.playlists[index1][0] ui.addUrlWidget_add.clicked.connect(self.clickAddUrlButton) def clickAddUrlButton(self): url = ui.addUrlWidget_name.text() self.playlist.addUrlToDatabase(self.id, self.playlistName, url) self.playlist_alarm("영상이 추가되었습니다") ui.addUrlWidget_name.setText('') def clickListButton(self, state, index2): #로딩창 띄우다가 로딩 끝나면 시그널 받아서 위젯 2번으로 넘어가고 ui.loadingWidget.setHidden(False) self.playVideo = PlayVideo(self.conn) self.playlistName = self.playlist.playlists[index2][0] self.playVideo.getUrl(self.id, self.playlistName) self.playVideo.start() self.playVideo.finished.connect(self.endLoading) def endLoading(self): self.playVideo.player.set_hwnd(ui.videoWidget.winId()) self.showThumbnail() ui.loadingWidget.setHidden(True) ui.stackedWidget.setCurrentIndex(2) self.playVideo.player.play() #동영상 재생 페이지 def showThumbnail(self): model = QtGui.QStandardItemModel(ui.thumbnailListView) ui.thumbnailListView.setModel(model) self.produceThumbnail() for n in range(0, len(self.playVideo.urls)): item2 = QtGui.QStandardItem(self.playVideo.urls[n][0]) item2.setSizeHint(QtCore.QSize(232, 141)) model.appendRow(item2) ui.thumbnailListView.setIndexWidget(item2.index(), self.thumbnailButtons[n]) #버튼 생성 def produceThumbnail(self): self.thumbnailButtons = [] for m in range(0, len(self.playVideo.urls)): self.thumbnailButtons.append( QtWidgets.QPushButton(ui.thumbnailListView)) url = self.playVideo.thumbnails[m] data = urllib.request.urlopen(url).read() image = QtGui.QImage() image.loadFromData(data) pixmap = QtGui.QPixmap(image.scaled(232, 131)) icon = QtGui.QIcon(pixmap) self.thumbnailButtons[m].setIcon(icon) self.thumbnailButtons[m].setIconSize(QtCore.QSize(232, 131))