AdminMainWidget::AdminMainWidget(LinQedInAdmin* ad,QWidget* parent):QFrame(parent),admin(ad){ setAttribute(Qt::WA_DeleteOnClose); setStyleSheet(GUIStyle::generalStyle()); mainVerticalLayout=new QVBoxLayout; logo=new QLabel; GUIStyle::initLogo(logo); mainVerticalLayout->addWidget(logo,0,Qt::AlignRight); loggedAsAdmin=new QLabel(tr("Modalità amministratore")); loggedAsAdmin->setStyleSheet(GUIStyle::headerStyle()); mainVerticalLayout->addWidget(loggedAsAdmin,0,Qt::AlignCenter); mainVerticalLayout->addSpacing(15); searchLayout=new QHBoxLayout; initUsernameSearch(); users=new QListWidget; users->setHidden(true); users->setEditTriggers(users->NoEditTriggers); users->setSelectionMode(QAbstractItemView::NoSelection); users->setMinimumWidth(450); users->setMinimumHeight(430); users->setStyleSheet("QListWidget{"+GUIStyle::borderStyle()+"padding:20px;padding-top:5px;}"); searchLayout->addWidget(users,5,Qt::AlignHCenter | Qt::AlignTop); initNameSurnameSearch(); mainVerticalLayout->addLayout(searchLayout); noUsers=new QLabel(tr("Nessun utente nel DB")); noUsers->setStyleSheet(GUIStyle::errorLabelStyle()); mainVerticalLayout->addWidget(noUsers,0,Qt::AlignCenter); buttonsLayout=new QHBoxLayout; save=new QPushButton(tr("Salva modifiche al DB")); save->setCursor(QCursor(Qt::PointingHandCursor)); save->setMaximumWidth(buttonsMaxWidth); connect(save,SIGNAL(clicked()),this,SLOT(saveDB())); buttonsLayout->addWidget(save,0,Qt::AlignCenter); add=new QPushButton(tr("Aggiungi un nuovo utente")); add->setCursor(QCursor(Qt::PointingHandCursor)); add->setMaximumWidth(buttonsMaxWidth); connect(add,SIGNAL(clicked()),this,SLOT(addUserRequest())); buttonsLayout->addWidget(add,0,Qt::AlignCenter); logout=new QPushButton(tr("Logout")); logout->setCursor(QCursor(Qt::PointingHandCursor)); connect(logout,SIGNAL(clicked()),this,SLOT(logoutRequest())); logout->setMaximumWidth(buttonsMaxWidth); buttonsLayout->addWidget(logout,0,Qt::AlignCenter); mainVerticalLayout->addLayout(buttonsLayout); populateList(admin->allUsers()); setLayout(mainVerticalLayout); QShortcut *save=new QShortcut(QKeySequence("Ctrl+S"),this); connect(save,SIGNAL(activated()),this,SLOT(saveDB())); }//AdminMainWidget
doubanFM::doubanFM(QWidget *parent) : QWidget(parent), ui(new Ui::doubanFM) { qDebug() << Q_FUNC_INFO; ui->setupUi(this); currentSongIndex = 0; pauseState = false; _channelListWidget = new channelList(this); _channelListWidget->setchannelId(currentChannelId); _channelListWidget->move(-_channelListWidget->getInvisibleWidth(),this->geometry().y()); _pauseMaskWidget = new pauseMaskWidget(this); _pauseMaskWidget->move(250,0); _pauseMaskWidget->setVisible(false); _loginwidget = new doubanLogin(this); _loginwidget->move(this->geometry().x(),-_loginwidget->geometry().height()); _mediaObject = new Phonon::MediaObject(this); _audioOutput = new Phonon::AudioOutput(this); Phonon::createPath(_mediaObject,_audioOutput); ui->seekSlider->setMediaObject(_mediaObject); albumImageManager = new QNetworkAccessManager(this); _mydouban = new Douban(this); readSettings(); qDebug() << "read setting" << _mydouban->hasLogin(); if(_mydouban->hasLogin()) { ui->userLoginButton->setToolTip(tr("click to logout")); ui->userLabel->setText(_mydouban->getDoubanUser().name); } else { ui->userLoginButton->setToolTip(tr("click to login")); ui->userLabel->setText(tr("Logout")); } nextShortCut = new QxtGlobalShortcut(QKeySequence("Alt+s"),this); pauseShortCut = new QxtGlobalShortcut(QKeySequence("Alt+p"),this); rateShortCut = new QxtGlobalShortcut(QKeySequence("Alt+r"),this); trashShortCut = new QxtGlobalShortcut(QKeySequence("Alt+t"),this); connect(nextShortCut,SIGNAL(activated()),this,SLOT(onSkipButtonClicked())); connect(pauseShortCut,SIGNAL(activated()),this,SLOT(onPauseButtonClicked())); connect(rateShortCut,SIGNAL(activated()),this,SLOT(onRateButtonClicked())); connect(trashShortCut,SIGNAL(activated()),this,SLOT(onTrashButtonClicked())); //connect the mainwidget signals and the slots connect(ui->volumeSlider,SIGNAL(valueChanged(int)),this,SLOT(onVolumneChange(int))); connect(ui->pauseButton,SIGNAL(clicked()),this,SLOT(onPauseButtonClicked())); connect(ui->userLoginButton,SIGNAL(clicked()),this,SLOT(onLoginButtonClicked())); connect(_mediaObject,SIGNAL(tick(qint64)),this,SLOT(playTick(qint64))); connect(albumImageManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(receiveAlbumImage(QNetworkReply*))); connect(this,SIGNAL(albumImageRequest(QString)),this,SLOT(onAlbumImage(QString))); connect(ui->rateSongButton,SIGNAL(clicked()),this,SLOT(onRateButtonClicked())); connect(ui->nextSongButton,SIGNAL(clicked()),this,SLOT(onSkipButtonClicked())); connect(ui->byeSongButton,SIGNAL(clicked()),this,SLOT(onTrashButtonClicked())); connect(_mediaObject,SIGNAL(currentSourceChanged(Phonon::MediaSource)),this,SLOT(sourceChanged(Phonon::MediaSource))); connect(_mediaObject,SIGNAL(stateChanged(Phonon::State,Phonon::State)),this,SLOT(stateChanged(Phonon::State,Phonon::State))); // connect the mainwidget signals and the slots of other widget connect(this,SIGNAL(sendlogoutRequest()),_mydouban,SLOT(logoutRequest())); connect(this,SIGNAL(sendSongListRequest(qint32,quint32,double)),_mydouban,SLOT(newSongListRequest(qint32,quint32,double))); connect(this,SIGNAL(sendSkipSongRequest(qint32,quint32,double)),_mydouban,SLOT(skipSongRequest(qint32,quint32,double))); connect(this,SIGNAL(sendRateSongRequest(qint32,quint32,double,bool)),_mydouban,SLOT(rateSongRequest(qint32,quint32,double,bool))); connect(this,SIGNAL(sendEndSongRequest(qint32,quint32,double)),_mydouban,SLOT(endSongRequest(qint32,quint32,double))); connect(this,SIGNAL(sendByeSongRequest(qint32,quint32,double)),_mydouban,SLOT(byeSongRequest(qint32,quint32,double))); // connect the signals of other widget and the mainwidget slot connect(_mydouban,SIGNAL(loginSucceed(DoubanUser)),this,SLOT(loginSucceed(DoubanUser))); connect(_mydouban,SIGNAL(sendSongList(QList<DoubanFMSong>)),this,SLOT(receiveSongList(QList<DoubanFMSong>))); connect(_mydouban,SIGNAL(sendRateSong(bool)),this,SLOT(receiveRateSong(bool))); connect(_mydouban,SIGNAL(sendSkipSong(bool)),this,SLOT(receiveSkipSong(bool))); connect(_mydouban,SIGNAL(sendByeSong(bool)),this,SLOT(receiveByeSong(bool))); connect(_mydouban,SIGNAL(sendEndSong(bool)),this,SLOT(receiveEndSong(bool))); connect(_mydouban,SIGNAL(sendChannelList(QList<DoubanChannel>,bool)),this,SLOT(receiveChannelList(QList<DoubanChannel>,bool))); connect(_mydouban,SIGNAL(sendLogoutSucceed(bool)),this,SLOT(logoutSucceed(bool))); connect(_pauseMaskWidget,SIGNAL(mousePressed()),this,SLOT(pauseMaskWidgetPressed())); connect(_channelListWidget,SIGNAL(channelChanged(qint32)),this,SLOT(receiveChannelChange(qint32))); //connect the other widget signal and slots connect(_mydouban,SIGNAL(captchaImageLoad(QPixmap)),_loginwidget,SLOT(onCaptchaImageLoad(QPixmap))); connect(_mydouban,SIGNAL(loginFailed(QString)),_loginwidget,SLOT(onLoginFailed(QString))); connect(_mydouban,SIGNAL(sendChannelList(QList<DoubanChannel>,bool)),_channelListWidget,SLOT(onReceiveChannelList(QList<DoubanChannel>,bool))); connect(_loginwidget,SIGNAL(loginRequest(QString,QString,QString)),_mydouban,SLOT(loginRequest(QString,QString,QString))); _mydouban->channelListRequest(); }
int clientConnection(int* cli_sock) { int r_size; int control; char* firstCommand; int firstComm,secondComm; char* user = malloc(MAX_USERNAME_LENGTH); char* password = malloc(MAX_PASSWORD_LENGTH); firstCommand=malloc(ANSWER_LENGTH); //Client should login /*do { if ((r_size = read(cli_sock, user, MAX_USERNAME_LENGTH)) == -1){ perror("Read error"); } if ((r_size = read(cli_sock, password, MAX_PASSWORD_LENGTH)) == -1){ perror("Read error"); } /*if ((control = write(cli_sock, buff, r_size)) == -1){ perror("Write error"); } }while (r_size > 0); if(checkUserLogin(user,password)==1) puts("User Logged"); else puts("Bad Login");*/ //Si mette in attesa del comando da parte del client do{ puts("Waiting for client first command"); read(cli_sock, firstCommand, CLIENT_COMMAND_LENGTH); #ifdef DEBUG puts("Comando preso in input:"); puts(firstCommand); #endif } while (getClientFirstCommand(firstCommand)==-1); if(firstComm=='0') { //Client Registration if(registrationRequest(cli_sock)==-1) puts("Registrazione al servizio fallita"); else puts("Registrazione al servizio avvenuta con successo"); } else if(firstComm=='1') { //Client login if(loginRequest(cli_sock)==-1) puts("Login al servizio falita"); else puts("Login al servizio avvenuta con successo"); } do{ puts("Waiting for client second command"); read(cli_sock, secondComm, CLIENT_COMMAND_LENGTH); #ifdef DEBUG puts("Comando preso in input:"); puts(secondComm); #endif } while (getClientSecondCommand(secondComm)==-1); if(secondComm=='2') { //Client Logout if(logoutRequest(cli_sock)==-1) puts("Logout al servizio fallito"); else puts("Logout al servizio avvenuta con successo"); //Terminates thread pthread_exit(-1); } else if(secondComm=='3') { //Client status 'available' if(availableRequest(cli_sock)==-1) puts("Aggiornamento di statocdisponibile fallito"); else puts("Aggiornamento di stato disponibile avvenuto con successo"); } else if(secondComm=='4') { //Client status 'busy' if(busyRequest(cli_sock)==-1) puts("Aggiornamento di statocdisponibile fallito"); else puts("Aggiornamento di stato occupato avvenuto con successo"); } else if(secondComm=='5') { //Retrieve available user list if(retrieveListRequest(cli_sock)==-1) puts("Richiesta lista utenti disponibili al servizio fallita"); else puts("Richeiesta lista utenti disponibili al servizio avvenuta con successo"); } pthread_exit(1); }