This commit is contained in:
Thomas resiX 2025-02-15 07:42:24 +01:00
parent 6e2fbe40fd
commit 3bdf55073a
8 changed files with 206 additions and 206 deletions

14
gui.cpp
View file

@ -1,14 +0,0 @@
#include "gui.h"
#include "ui_gui.h"
GUI::GUI(QWidget *parent) :
QWidget(parent),
ui(new Ui::GUI)
{
ui->setupUi(this);
}
GUI::~GUI()
{
delete ui;
}

22
gui.h
View file

@ -1,22 +0,0 @@
#ifndef GUI_H
#define GUI_H
#include <QWidget>
namespace Ui {
class GUI;
}
class GUI : public QWidget
{
Q_OBJECT
public:
explicit GUI(QWidget *parent = 0);
~GUI();
//private:
Ui::GUI *ui;
};
#endif // GUI_H

53
gui.ui
View file

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>GUI</class>
<widget class="QWidget" name="GUI">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>884</width>
<height>562</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QFrame" name="videoWidget">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QListWidget" name="liste">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>210</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -1,72 +1,15 @@
#include <iostream>
#include <QApplication> #include <QApplication>
#include <QWidget> #include "player_gui.h"
#include <QFrame>
#include <QHBoxLayout>
#include <QFile>
#include <QGridLayout>
#include <QSizePolicy>
#include <QLineEdit>
#include <QMenuBar>
#include <QMenu>
#include "player.h" // """ Version 0.11 """
// """ Version 0.10 """
//using namespace std; //using namespace std;
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
QApplication app(argc, argv); QApplication app(argc, argv);
QWidget window; player_gui w;
window.setGeometry(20,50,1270,590); w.show();
QMenuBar menuBar(&window);
QMenu *fileMenu;
QMenu *workMenu;
fileMenu=menuBar.addMenu("&Programm");
workMenu=menuBar.addMenu("&Einstellen");
fileMenu->addAction("Be&enden", app.exit);
QAction *ipAction=workMenu->addAction("&IP-Adresse");
QFrame videoWidget;
Player player(&videoWidget);
QSizePolicy vw=videoWidget.sizePolicy();
vw.setHorizontalPolicy(QSizePolicy::Expanding);
videoWidget.setSizePolicy(vw);
QListWidget liste;
for(int x=1;x<=player.get_Sender();x++){
liste.addItem(player.get_Name(x));
}
//Sender anklicken
QObject::connect(&liste, SIGNAL(itemClicked(QListWidgetItem*)), &player, SLOT(play(QListWidgetItem*)));
//IP einstellen
QObject::connect(ipAction, SIGNAL(triggered()), &player, SLOT(set_ip()));
QSizePolicy li=liste.sizePolicy();
li.setHorizontalPolicy(QSizePolicy::Fixed);
liste.setSizePolicy(li);
QLineEdit lineEdit;
QSizePolicy le=lineEdit.sizePolicy();
le.setHorizontalPolicy(QSizePolicy::Fixed);
lineEdit.setSizePolicy(le);
QGridLayout gridLayout;
gridLayout.setMargin(0);
gridLayout.setSpacing(0);
gridLayout.addWidget(&menuBar, 0, 0, 1, 0);
gridLayout.addWidget(&videoWidget, 1, 0, 2, 1);
gridLayout.addWidget(&liste, 1, 1);
gridLayout.addWidget(&lineEdit, 2, 1);
window.setLayout(&gridLayout);
window.show();
return app.exec(); return app.exec();
} }

View file

@ -1,6 +1,10 @@
#include "player_gui.h"
#include "ui_player_gui.h"
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <string> #include <string>
#include <cstdlib>
#include <curl/curl.h> #include <curl/curl.h>
#include <vlc/vlc.h> #include <vlc/vlc.h>
@ -14,25 +18,28 @@
#include <QDir> #include <QDir>
#include <QStringList> #include <QStringList>
#include <QTextStream> #include <QTextStream>
#include <cstdlib>
#include <iostream>
#include <QMessageBox> #include <QMessageBox>
#include "player.h" player_gui::player_gui(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::player_gui){
ui->setupUi(this);
Player::Player(QFrame *video){
this->videoWidget = video;
std::cout << "starte..." << std::endl; std::cout << "starte..." << std::endl;
ui->statusbar->showMessage("starte...", 0);
this->set_ip();
this->sender_holen(); this->sender_holen();
this->sender_laden(); this->sender_laden();
//this->sender_ausgeben(); //this->sender_ausgeben();
this->on_lineEdit_textChanged("");
// Play init // Play init
/* Load the VLC engine */ /* Load the VLC engine */
inst = libvlc_new (0, NULL); inst = libvlc_new (0, NULL);
} }
Player::~Player(){ player_gui::~player_gui(){
if(mp){ if(mp){
/* Stop playing */ /* Stop playing */
libvlc_media_player_stop (mp); libvlc_media_player_stop (mp);
@ -41,29 +48,41 @@ Player::~Player(){
libvlc_release (inst); libvlc_release (inst);
} }
std::cout << "beende..." << std::endl; std::cout << "beende..." << std::endl;
delete ui;
} }
int Player::set_ip(void){ void player_gui::on_actionBeenden_triggered(){
std::cout << "IP-Adresse setzen..." << std::endl;
exit(0);
}
void player_gui::set_ip(void){
QFile file("vlc-vdr.ini"); QFile file("vlc-vdr.ini");
QString ip; if(file.open(QIODevice::ReadWrite | QIODevice::Text)){
if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
std::cout << " oeffnen erfolgreich..." << std::endl; std::cout << " oeffnen erfolgreich..." << std::endl;
QByteArray line = file.readLine(); QByteArray line = file.readLine();
file.close();
QString string = line; QString string = line;
if(string==""){ if(string==""){
ip = "127.0.0.1:3000"; ip = "127.0.0.1:3000";
QTextStream output(&file);
output << ip;
}else{ }else{
ip = string; ip = string;
} }
std::cout << ip.toStdString() << " gesetzt..." << std::endl; std::cout << ip.toStdString() << " gesetzt..." << std::endl;
}else{ }else{
std::cout << " oeffnen fehlgeschlagen..." << std::endl; std::cout << " oeffnen fehlgeschlagen..." << std::endl;
return 1;
} }
file.close();
}
void player_gui::on_actionIP_Adresse_triggered() {
this->set_ip();
QFile file("vlc-vdr.ini");
std::cout << "IP-Adresse setzen..." << std::endl;
ui->statusbar->showMessage("IP-Adresse setzen...", 0);
bool ok; bool ok;
QString text = QInputDialog::getText(0, "IP-Adresse", "IP-Adresse(127.0.0.1):Port(3000)", QString text = QInputDialog::getText(this, "IP-Adresse", "IP-Adresse(127.0.0.1):Port(3000)",
QLineEdit::Normal, ip, &ok); QLineEdit::Normal, ip, &ok);
if(text!="")
ip = text; ip = text;
if(file.open(QIODevice::WriteOnly | QIODevice::Text)){ if(file.open(QIODevice::WriteOnly | QIODevice::Text)){
QTextStream output(&file); QTextStream output(&file);
@ -71,29 +90,16 @@ int Player::set_ip(void){
file.close(); file.close();
} }
std::cout << text.toStdString() << " gesetzt." << std::endl; std::cout << text.toStdString() << " gesetzt." << std::endl;
ui->statusbar->showMessage("IP-Adresse setzen... gesetzt.", 0);
int ret = QMessageBox::warning(0, "Beenden?", "Programm neu starten!", QMessageBox::Yes); this->sender_holen();
this->sender_laden();
return 0; this->on_lineEdit_textChanged("");
} }
size_t Player::write_data(void *ptr, size_t size, size_t nmemb, void *stream){ size_t player_gui::write_data(void *ptr, size_t size, size_t nmemb, void *stream){
size_t written = fwrite(ptr, size, nmemb, (FILE *)stream); size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
return written; return written;
} }
int Player::sender_holen(void){ int player_gui::sender_holen(void){
QFile ifile("vlc-vdr.ini");
QString ip;
if(ifile.open(QIODevice::ReadOnly | QIODevice::Text)){
std::cout << " oeffnen erfolgreich..." << std::endl;
QByteArray line = ifile.readLine();
ifile.close();
QString string = line;
if(string==""){
ip = "127.0.0.1:3000";
}else{
ip = string;
}
}
CURL *curl; CURL *curl;
FILE *file; FILE *file;
CURLcode res; CURLcode res;
@ -112,13 +118,12 @@ int Player::sender_holen(void){
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
else else
std::cout << "Sender holen und in channels.m3u speichern..." << std::endl; std::cout << "Sender holen und in channels.m3u speichern..." << std::endl;
curl_easy_cleanup(curl); curl_easy_cleanup(curl);
} }
fclose(file); fclose(file);
return 0; return 0;
} }
int Player::sender_laden(void){ int player_gui::sender_laden(void){
int x=0; int x=0;
this->Sender=1; this->Sender=1;
QFile file("channels.m3u"); QFile file("channels.m3u");
@ -148,13 +153,27 @@ int Player::sender_laden(void){
} }
return 0; return 0;
} }
int Player::sender_ausgeben(void){ int player_gui::sender_ausgeben(void){
for(int x=1;x<=this->Sender;x++){ for(int x=1;x<=this->Sender;x++){
std::cout << x << ". " << this->Name[x].toStdString() << "," << this->URL[x].toStdString() << std::endl; std::cout << x << ". " << this->Name[x].toStdString() << "," << this->URL[x].toStdString() << std::endl;
} }
return 0; return 0;
} }
int Player::play(QListWidgetItem *item){ void player_gui::on_lineEdit_textChanged(const QString &arg1){
std::cout << "suchen" << std::endl;
ui->listWidget->clear();
for(int x=1;x<=this->Sender;x++){
if(this->Name[x].contains(arg1)){
ui->listWidget->addItem(this->Name[x]);
}
}
}
void player_gui::on_listWidget_itemClicked(QListWidgetItem *item)
{
std::cout << item->text().toStdString() << std::endl;
this->play(item);
}
int player_gui::play(QListWidgetItem *item){
if (!item) if (!item)
return 1; return 1;
@ -168,6 +187,7 @@ int Player::play(QListWidgetItem *item){
break; break;
} }
} }
ui->statusbar->showMessage(Name[x]+" - "+URL[x], 0);
/* Stop playing */ /* Stop playing */
if(mp) if(mp)
libvlc_media_player_stop (mp); libvlc_media_player_stop (mp);
@ -183,11 +203,11 @@ int Player::play(QListWidgetItem *item){
libvlc_media_release (m); libvlc_media_release (m);
#if defined(Q_OS_WIN) // Windows #if defined(Q_OS_WIN) // Windows
libvlc_media_player_set_hwnd(mp, (void *)videoWidget->winId()); // hwnd libvlc_media_player_set_hwnd(mp, (void *)ui->videoWidget->winId()); // hwnd
#elif defined(Q_OS_MAC) // Mac #elif defined(Q_OS_MAC) // Mac
libvlc_media_player_set_nsobject(mp, (void *)videoWidget->winId()); // view libvlc_media_player_set_nsobject(mp, (void *)ui->videoWidget->winId()); // view
#else //Linux #else //Linux
int windid = videoWidget->winId(); int windid = ui->videoWidget->winId();
libvlc_media_player_set_xwindow (mp, windid); // xid libvlc_media_player_set_xwindow (mp, windid); // xid
#endif #endif

View file

@ -1,27 +1,35 @@
#ifndef PLAYER_H #ifndef PLAYER_GUI_H
#define PLAYER_H #define PLAYER_GUI_H
#include <QMainWindow>
#include <QObject> #include <QObject>
#include <QFile> #include <QFile>
#include <QFrame> #include <QFrame>
#include <QListWidget> #include <QListWidget>
#include <vlc/vlc.h> #include <vlc/vlc.h>
class Player : public QObject { namespace Ui {
class player_gui;
}
class player_gui : public QMainWindow{
Q_OBJECT Q_OBJECT
public: public:
Player(QFrame*); explicit player_gui(QWidget *parent = 0);
~Player(); ~player_gui();
int get_Sender() { return this->Sender; }
QString get_Name(int x) { return this->Name[x]; }
QString get_URL(int x) { return this->URL[x]; }
public slots: private slots:
void on_actionBeenden_triggered();
void on_actionIP_Adresse_triggered();
void on_lineEdit_textChanged(const QString &arg1);
int play(QListWidgetItem *item); int play(QListWidgetItem *item);
int set_ip(void);
private: void on_listWidget_itemClicked(QListWidgetItem *item);
int val;
private:
Ui::player_gui *ui;
void set_ip(void);
static size_t write_data(void*, size_t, size_t , void*); static size_t write_data(void*, size_t, size_t , void*);
int sender_holen(void); int sender_holen(void);
int sender_laden(void); int sender_laden(void);
@ -34,7 +42,6 @@ class Player : public QObject {
libvlc_instance_t * inst; libvlc_instance_t * inst;
libvlc_media_player_t *mp=0; libvlc_media_player_t *mp=0;
libvlc_media_t *m; libvlc_media_t *m;
}; };
#endif // PLAYER_H #endif // PLAYER_GUI_H

116
player_gui.ui Normal file
View file

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>player_gui</class>
<widget class="QMainWindow" name="player_gui">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1160</width>
<height>620</height>
</rect>
</property>
<property name="windowTitle">
<string>vlc-vdr</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="videoWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QListWidget" name="listWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1210</width>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menuProgramm">
<property name="title">
<string>Programm</string>
</property>
<addaction name="actionBeenden"/>
</widget>
<widget class="QMenu" name="menuEinstellen">
<property name="title">
<string>Einstellen</string>
</property>
<addaction name="actionIP_Adresse"/>
</widget>
<addaction name="menuProgramm"/>
<addaction name="menuEinstellen"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionBeenden">
<property name="text">
<string>Beenden</string>
</property>
</action>
<action name="actionIP_Adresse">
<property name="text">
<string>IP-Adresse</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -5,12 +5,15 @@ greaterThan(QT_MAJOR_VERSION, 4) : QT += widgets
SOURCES += \ SOURCES += \
main.cpp \ main.cpp \
player.cpp player_gui.cpp
LIBS += -lcurl -lvlc LIBS += -lcurl -lvlc
DEFINES += CURL_STATICLIB VLC_STATICLIB DEFINES += CURL_STATICLIB VLC_STATICLIB
HEADERS += \ HEADERS += \
player.h player_gui.h
#CONFIG+= static #CONFIG+= static
FORMS += \
player_gui.ui