/mainwindow.cpp

https://github.com/sapr-bntu/Mediaplayer · C++ · 185 lines · 140 code · 37 blank · 8 comment · 3 complexity · cae8c4ea79f3ea66c725d2b90e6c37e2 MD5 · raw file

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QDebug>
  4. MainWindow::MainWindow(QWidget *parent) :
  5. QMainWindow(parent),
  6. ui(new Ui::MainWindow)
  7. {
  8. ui->setupUi(this);
  9. QFile file("Playlist.s3db") ;
  10. QSqlDatabase db;
  11. if (file.exists())
  12. {
  13. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  14. db.setDatabaseName("Playlist.s3db");
  15. db.open();
  16. QSqlQuery query;
  17. query.exec("CREATE TABLE tablica ("
  18. "ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
  19. "Artist TEXT NULL,"
  20. "Title TEXT NULL,"
  21. "Location TEXT NULL)");
  22. }
  23. else
  24. {
  25. db = QSqlDatabase::addDatabase("QSQLITE");
  26. db.setDatabaseName("Playlist.s3db");
  27. db.open();
  28. }
  29. audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
  30. mediaObject = new Phonon::MediaObject(this);
  31. metaInformationResolver = new Phonon::MediaObject(this);
  32. Phonon::createPath(mediaObject, audioOutput);
  33. Phonon::MediaSource source("Kalimba.mp3");
  34. mediaObject->setCurrentSource(source);
  35. seekSlider = new Phonon::SeekSlider(this);
  36. seekSlider->setMediaObject(mediaObject);
  37. volumeSlider = new Phonon::VolumeSlider(this);
  38. volumeSlider->setAudioOutput(audioOutput);
  39. volumeSlider->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
  40. ui->verticalLayout->addWidget(seekSlider);
  41. ui->verticalLayout->addWidget(volumeSlider);
  42. // ui->centralWidget->layout()->addChildWidget(volumeSlider);
  43. connect(ui->ButtonPlay, SIGNAL(clicked()), this, SLOT(play()));
  44. connect(ui->ButtonStop, SIGNAL(clicked()), mediaObject, SLOT(stop()));
  45. connect(ui->ButtonPause, SIGNAL(clicked()), mediaObject, SLOT(pause()));
  46. connect(ui->ButtonPrev, SIGNAL(clicked()), this, SLOT(prev()));
  47. connect(ui->ButtonNext, SIGNAL(clicked()), this, SLOT(next()));
  48. connect(mediaObject,SIGNAL(finished()),this,SLOT(next()));
  49. connect(ui->pushButton_2,SIGNAL(clicked()), this,SLOT(delete1()));
  50. // QSqlQuery quer;
  51. // quer.exec("INSERT INTO tablica (ID, Artist, Title, Location) VALUES ('5',Nana','Taaaaa','1000');");
  52. model = new QSqlTableModel(this);
  53. model->setTable("tablica");
  54. model->select();
  55. model->setFilter("");
  56. ui->tableView->selectRow(0);
  57. ui->tableView->setModel(model);
  58. }
  59. void MainWindow::delete1()
  60. {
  61. QSqlQuery quer;
  62. //qDebug()<<currentid;
  63. quer.exec(QString("DELETE FROM tablica WHERE ID = %1").arg(currentid));
  64. //qDebug()<<quer.lastError();
  65. model->select();
  66. }
  67. MainWindow::~MainWindow()
  68. {
  69. delete ui;
  70. }
  71. int MainWindow::next()
  72. {
  73. curentIndex++;
  74. MainWindow::play();
  75. return curentIndex;
  76. }
  77. int MainWindow::prev()
  78. {
  79. curentIndex--;
  80. MainWindow::play();
  81. return curentIndex;
  82. }
  83. QString MainWindow::play()
  84. {
  85. QString str;
  86. str = model->record(curentIndex).value(1).toString();
  87. //qDebug()<<"row="<<curentIndex<< str;
  88. Phonon::MediaSource source(str);
  89. mediaObject->setCurrentSource(source);
  90. mediaObject->play();
  91. ui->tableView->selectRow(curentIndex);
  92. return str;
  93. }
  94. int MainWindow::stop()
  95. {
  96. mediaObject->stop();
  97. return mediaObject->state();
  98. }
  99. int MainWindow::pause()
  100. {
  101. mediaObject->pause();
  102. return mediaObject->state();
  103. }
  104. void MainWindow::tableClicked(int row, int /* column */)
  105. {
  106. bool wasPlaying = mediaObject->state() == Phonon::PlayingState;
  107. mediaObject->stop();
  108. if (row >= sources.size())
  109. return;
  110. mediaObject->setCurrentSource(sources[row]);
  111. qDebug()<<sources.size();
  112. }
  113. QString MainWindow::on_tableView_clicked()
  114. {
  115. QModelIndex index;
  116. QString str;
  117. id = model-> record(index.row()).value("ID").toInt();
  118. currentid = id;
  119. index = ui->tableView->selectionModel()->currentIndex();
  120. str = model->record(index.row()).value("Location").toString();
  121. curentIndex=index.row();
  122. qDebug()<<str;
  123. Phonon::MediaSource source(str);
  124. return str;
  125. }
  126. void MainWindow::on_ButtonNext_clicked()
  127. {
  128. }
  129. void MainWindow::on_ButtonPrev_clicked()
  130. {
  131. }
  132. void MainWindow::on_pushButton_clicked()
  133. {
  134. QString fileName = QFileDialog::getOpenFileName(this,
  135. tr("Open Image"), "", tr("Musik Files (*.mp3 *.wav *.ogg)"));
  136. qDebug()<<fileName;
  137. QSqlQuery quer;
  138. QString query;
  139. //quer.exec("INSERT INTO tablica (Artist, Title, Location) VALUES ('rr','Tata','rr');");
  140. // quer.exec("INSERT INTO tablica (ID, Artist, Title, Location) VALUES ('5',Nana','Taaaaa','jhh');");
  141. query ="INSERT INTO tablica (Artist, Title, Location) VALUES ('','','"+fileName+"')";
  142. qDebug()<<query;
  143. quer.exec(query);
  144. model->select();
  145. }
  146. void MainWindow::on_ButtonPlay_clicked()
  147. {
  148. }