* New upstream release.
authorgregor herrmann <gregoa@debian.org>
Wed, 13 Jun 2007 20:28:08 +0000 (20:28 -0000)
committergregor herrmann <gregoa@debian.org>
Wed, 13 Jun 2007 20:28:08 +0000 (20:28 -0000)
ChangeLog
debian/changelog
main.cpp
main.h
maindialog.ui
maindialog_4.1.ui
options.cpp
qteleschorsch.pro
qteleschorsch_de.ts
qteleschorsch_fr.ts
teleschorschrc

index ff93fc0d50cdd81447876f6dfd3de0936c91531d..6be65659a3e3d48fdc979145db1491682e5bdfe5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,117 @@
 ------------------------------------------------------------------------
+r476 | philipp | 2007-06-13 21:45:44 +0200 (Wed, 13 Jun 2007) | 2 lines
+Changed paths:
+   M /teleschorsch/trunk
+   M /teleschorsch/trunk/main.cpp
+   M /teleschorsch/trunk/main.h
+   M /teleschorsch/trunk/qteleschorsch.pro
+
+Made "Save & Play" available for QT 4.1.
+
+------------------------------------------------------------------------
+r475 | philipp | 2007-05-30 23:57:22 +0200 (Wed, 30 May 2007) | 2 lines
+Changed paths:
+   M /teleschorsch/trunk/main.cpp
+   M /teleschorsch/trunk/main.h
+
+The "Save+Play" action works (more or less) with the mplayer now.
+
+------------------------------------------------------------------------
+r474 | gregoa | 2007-05-28 02:07:25 +0200 (Mon, 28 May 2007) | 1 line
+Changed paths:
+   M /teleschorsch/trunk/main.cpp
+
+start to work around tq 4.2 specific function
+------------------------------------------------------------------------
+r473 | gregoa | 2007-05-28 01:22:24 +0200 (Mon, 28 May 2007) | 1 line
+Changed paths:
+   M /teleschorsch/trunk/main.cpp
+   M /teleschorsch/trunk/qteleschorsch_de.ts
+   M /teleschorsch/trunk/qteleschorsch_fr.ts
+
+1 more comment, 1 changed error message + translation
+------------------------------------------------------------------------
+r472 | gregoa | 2007-05-27 16:24:53 +0200 (Sun, 27 May 2007) | 1 line
+Changed paths:
+   M /teleschorsch/trunk/options.cpp
+   M /teleschorsch/trunk/qteleschorsch_de.ts
+   M /teleschorsch/trunk/qteleschorsch_fr.ts
+
+work on translations
+------------------------------------------------------------------------
+r471 | gregoa | 2007-05-27 15:55:14 +0200 (Sun, 27 May 2007) | 1 line
+Changed paths:
+   M /teleschorsch/trunk/main.cpp
+
+extend Save as ... dialog
+------------------------------------------------------------------------
+r470 | gregoa | 2007-05-27 15:13:55 +0200 (Sun, 27 May 2007) | 1 line
+Changed paths:
+   M /teleschorsch/trunk/teleschorschrc
+
+channels: new URL for ZIB1 (works with vlc now, yeah\!), new: Heute in Österreich, changed: M6 1250 and M6 le six'
+------------------------------------------------------------------------
+r469 | gregoa | 2007-05-17 01:36:24 +0200 (Thu, 17 May 2007) | 2 lines
+Changed paths:
+   M /teleschorsch/trunk/README
+   M /teleschorsch/trunk/doxyconf
+   M /teleschorsch/trunk/main.cpp
+   M /teleschorsch/trunk/main.h
+   M /teleschorsch/trunk/qteleschorsch.pro
+
+save & startsave: well, vlc works, mplayer is a beast
+
+------------------------------------------------------------------------
+r468 | gregoa | 2007-05-16 20:19:52 +0200 (Wed, 16 May 2007) | 3 lines
+Changed paths:
+   A /teleschorsch/trunk/doxyconf
+   M /teleschorsch/trunk/main.h
+   D /teleschorsch/trunk/tags
+
+Added support for doxygen. The documentation can now be created with
+doxygen doxyconf
+
+------------------------------------------------------------------------
+r467 | gregoa | 2007-04-27 23:04:46 +0200 (Fri, 27 Apr 2007) | 1 line
+Changed paths:
+   A /teleschorsch/trunk/tags
+
+add tags file (testing new repo)
+------------------------------------------------------------------------
+r466 | gregoa | 2007-04-25 23:40:32 +0200 (Wed, 25 Apr 2007) | 1 line
+Changed paths:
+   M /teleschorsch/trunk/main.h
+
+improve inline documentation if Player in main.h
+------------------------------------------------------------------------
+r465 | philipp | 2007-04-25 22:28:02 +0200 (Wed, 25 Apr 2007) | 2 lines
+Changed paths:
+   M /teleschorsch/trunk/main.cpp
+   M /teleschorsch/trunk/main.h
+
+Added Player class.
+
+------------------------------------------------------------------------
+r464 | gregoa | 2007-04-25 22:19:04 +0200 (Wed, 25 Apr 2007) | 1 line
+Changed paths:
+   M /teleschorsch/trunk/README
+
+README: notes on saving streams
+------------------------------------------------------------------------
+r463 | philipp | 2007-04-25 20:24:47 +0200 (Wed, 25 Apr 2007) | 2 lines
+Changed paths:
+   M /teleschorsch/trunk/maindialog.ui
+   M /teleschorsch/trunk/maindialog_4.1.ui
+
+Added buttons for save. They do not have functionality now.
+
+------------------------------------------------------------------------
+r462 | gregoa | 2007-04-21 00:40:53 +0200 (Sat, 21 Apr 2007) | 1 line
+Changed paths:
+   M /teleschorsch/trunk/teleschorschrc
+
+new URL for ZIB2
+------------------------------------------------------------------------
 r461 | gregoa | 2007-04-16 17:54:54 +0200 (Mon, 16 Apr 2007) | 1 line
 Changed paths:
    M /teleschorsch/trunk/teleschorschrc
index cd17842317d6f32c691b13b424210cf7be0456e6..7e4f3a7811e7a160a687b933cc80174d59282ec9 100644 (file)
@@ -1,3 +1,9 @@
+teleschorsch (0.2.0-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- gregor herrmann <gregor+debian@comodo.priv.at>  Wed, 13 Jun 2007 22:27:41 +0200
+
 teleschorsch (0.1.11-1) unstable; urgency=low
 
   * New upstream release.
index 7ddfe0add1279988b713d7999dfb7bfca98135c5..ba0ee7c0b5f12f65697df0c4f5ef87ffdaf632de 100644 (file)
--- a/main.cpp
+++ b/main.cpp
 */
 
 #include <QtGlobal>
-#include <QtDebug>
-#include <QApplication>
-#include <QVector>
-#include <QFile>
-#include <QProcess>
-#include <QMessageBox>
-#include <QDateTime>
-#include <QLocale>
-#include <QDir>
-#include <QTranslator>
+#include <QtGui>
 
 #include <iostream> // for help output
 #include <string>   // for help output
+#include <sys/stat.h> // glibc for umask and mkfifo
+#include <errno.h>
 
 #include "main.h"
 #include "options.h"
 
 
+// Types
+// =====
+
+VlcPlayer::VlcPlayer() {
+       name = "vlc";
+}
+
+
+bool VlcPlayer::play(QString urlToPlay, QTime offset, bool saveOnly, QString saveFileName, QString& errorMsg) {
+       if (saveOnly && saveFileName.isEmpty()) return true;
+       QStringList arguments;
+       arguments.append(urlToPlay);
+       arguments.append("--start-time");
+       arguments.append(QString::number(QTime(0, 0, 0, 0).secsTo(offset)));
+       if (!saveFileName.isEmpty()) {
+               arguments.append("--sout");
+               arguments.append(QString("#transcode{vcodec=mp4v,vb=384,scale=1,acodec=mpga,ab=128,channels=2}:duplicate{%1dst=std{access=file,mux=mp4,dst=\"%2\"}}").arg(saveOnly ? "" : "dst=display,").arg(saveFileName));
+       }
+       QProcess player(0);
+       qDebug() << "vlc" << arguments;
+       if (!player.startDetached("vlc", arguments)) {
+               errorMsg = QObject::tr("Could not start vlc.");
+               return false;
+       }
+       return true;
+}
+
+
+MPlayer::MPlayer() {
+       name = "mplayer";
+       download = 0;
+       #ifndef QT_4_1_COMPATIBLE
+       tee = 0;
+       player = 0;
+       #else
+       shell = 0;
+       #endif
+       tempFile = QDir::tempPath() + "teleschorschfifo." + qApp->sessionId();
+}
+
+
+MPlayer::~MPlayer() {
+       stopProcesses();
+       if (QFile::exists(tempFile)) QFile::remove(tempFile);
+}
+
+
+void MPlayer::stopProcesses() {
+       if (download) {download->terminate(); download = 0;}
+       #ifndef QT_4_1_COMPATIBLE
+       if (player) {player->terminate(); player = 0;}
+       if (tee) {tee->terminate(); tee = 0;}
+       #else
+       if (shell) {shell->terminate(); shell = 0;}
+       #endif
+       // If the QProcesses are deleted, a relatively long timeout occurs
+       /*
+       delete player;
+       delete tee;
+       delete download;
+       delete shell;
+       */
+
+}
+
+
+// Play & save with mplayer in the bash:
+// mkfifo zibpipe
+// mplayer -dumpstream -dumpfile zibpipe "rtsp://81.189.213.1:554/orf2/zb/zib070423l.rm?URL=/ramgen/orf2/zb/zib070423l.rm&cloakport=8088,554,7070" >/dev/null 2>&1 | tee pipeout < zibpipe | mplayer -cache 512 -
+bool MPlayer::play(QString urlToPlay, QTime offset, bool saveOnly, QString saveFileName, QString& errorMsg) {
+       stopProcesses();
+       if (saveOnly && saveFileName.isEmpty()) return true;
+       QByteArray pipeFileName = tempFile.toLocal8Bit();
+       static const char* pipeFile = pipeFileName.data();
+       static const QString notStartError = QObject::tr("Could not start %1.");
+       QStringList arguments;
+       arguments.append(urlToPlay);
+       arguments.append("-prefer-ipv4");    // -"- avoids IPV6 error message
+       arguments.append("-ss"); 
+       arguments.append(QString::number(QTime(0, 0, 0, 0).secsTo(offset)));
+       if (!saveFileName.isEmpty()) {
+               arguments.append("-dumpstream");
+               arguments.append("-dumpfile");
+               if (saveOnly) {
+                       arguments.append(saveFileName);
+               } else {
+                       // Create fifo file ("named pipe") if it does not exist
+                       if (!QFile::exists(pipeFile)) {
+                               int result = mkfifo(pipeFile, 0664);
+                               if (result) {
+                                       switch (errno) {
+                                               case EACCES: errorMsg = "EACCES"; break;
+                                               case ENAMETOOLONG: errorMsg = "ENAMETOOLONG"; break;
+                                               case ENOENT: errorMsg = "ENOENT"; break;
+                                               case ENOTDIR: errorMsg = "ENOTDIR"; break;
+                                               case ELOOP: errorMsg = "ELOOP"; break;
+                                               case EEXIST: errorMsg = "EACCESS"; break;
+                                               case ENOSPC: errorMsg = "ENOSPC"; break;
+                                               case EROFS: errorMsg = "EROFS"; break;
+                                               default: errorMsg = QObject::tr("unknown error code");
+                                       }
+                                       errorMsg = QObject::tr("The pipe %1 cannot be created (%2)").arg(pipeFile).arg(errorMsg);
+                                       return false;
+                               }
+                       }
+                       arguments.append(pipeFile);
+               }
+               qDebug() << "mplayer" << arguments;
+               download = new QProcess(0);
+               download->start("mplayer", arguments);
+               if (!download->waitForStarted()) {
+                       errorMsg = notStartError.arg("mplayer");
+                       return false;
+               }
+               if (saveOnly) return true;
+               arguments.clear();
+               arguments.append("-");
+       }
+       arguments.append("-cache");
+       arguments.append("512");
+       if (!saveOnly && !saveFileName.isEmpty()) {
+               #ifndef QT_4_1_COMPATIBLE
+               tee = new QProcess(0);
+               QStringList teeArgs;
+               teeArgs.append(saveFileName);
+               tee->setStandardInputFile(pipeFile); // QT 4.2 function
+               player = new QProcess(0);
+               tee->setStandardOutputProcess(player); // QT 4.2 function
+               qDebug() << "tee" << teeArgs;
+               qDebug() << "mplayer" << arguments;
+               tee->start("tee", teeArgs);
+               if (!tee->waitForStarted()) {
+                       errorMsg = notStartError.arg("tee");
+                       return false;
+               }
+               player->start("mplayer", arguments); // _g_mplayer doesn't like - (/dev/stdin)
+               if (!player->waitForStarted()) {
+                       errorMsg = notStartError.arg("mplayer");
+                       return false;
+               }
+
+               #else
+               shell = new QProcess(0);
+               QStringList shellArgs;
+               shellArgs << "-c" << "tee " + saveFileName + " < " + pipeFile + " | mplayer " + arguments.join(" ");
+               qDebug() << "/bin/sh" << shellArgs;
+               shell->start("/bin/sh", shellArgs);
+               if (!shell->waitForStarted()) {
+                       errorMsg = notStartError.arg("/bin/sh");
+                       return false;
+               }
+               #endif
+
+               return true;
+       }
+       qDebug() << "gmplayer" << arguments;
+       QProcess player(0);
+       if (!player.startDetached("gmplayer", arguments)) {
+               errorMsg = notStartError.arg("gmplayer");
+               return false;
+       }
+       return true;
+}
+
+
 
 // Functions
 // =========
@@ -217,19 +375,6 @@ bool evaluateStaticUrl(const QString& staticUrl, QDate date, QString& result, QS
 }
 
 
-void appendPlayerOptions(const QString& player, QTime offset, QStringList& arguments) {
-       QTime zero = QTime(0, 0, 0, 0);
-       int offsetSec = zero.secsTo(offset);
-       if (player.contains("vlc")) arguments.append("--start-time");
-       if (player.contains("gmplayer")) {
-               arguments << "-cache" << "512";
-               arguments << "-prefer-ipv4";    // -"- avoids IPV6 error message
-               arguments << "-ss"; 
-       }
-       arguments << QString::number(offsetSec);
-}
-
-
 void showHelp() {
        // Isn't there a way to output QStrings directly?
        std::cout << QObject::tr("Usage: qteleschorsch [options]").toStdString() << std::endl
@@ -243,10 +388,14 @@ void showHelp() {
 // ==========
 
 MainDialog::MainDialog(QWidget *parent): QDialog(parent) {
+       player = 0;
+       
        // User interface
        setupUi(this);
        QObject::connect(btnOptions, SIGNAL(clicked()), this, SLOT(editOptions()));
        QObject::connect(btnStart, SIGNAL(clicked()), this, SLOT(startAction()));
+       QObject::connect(btnStartSave, SIGNAL(clicked()), this, SLOT(startSaveAction()));
+       QObject::connect(btnSave, SIGNAL(clicked()), this, SLOT(saveAction()));
 
        // Init configInfo
        initConfigInfo(configInfo);
@@ -261,7 +410,7 @@ MainDialog::MainDialog(QWidget *parent): QDialog(parent) {
        // Default date
        QDateTime dateTime = QDateTime::currentDateTime(); // set the default date to today if it is past midday
        if (dateTime.time().hour() < 12) dateTime = dateTime.addDays(-1);
-       #if QT_VERSION >= 0x040200
+       #ifndef QT_4_1_COMPATIBLE
        calDate->setSelectedDate(dateTime.date());
        #else
        calDateEdit->setDate(dateTime.date());
@@ -269,6 +418,57 @@ MainDialog::MainDialog(QWidget *parent): QDialog(parent) {
 }
 
 
+MainDialog::~MainDialog() {
+       delete player;
+}
+
+
+bool MainDialog::play(bool play, bool save) {
+       // Read data from form
+       int row = lwChannels->currentRow();
+       if (row < 0) return false;
+
+       Channel channel = channelVec[row];
+       #ifndef QT_4_1_COMPATIBLE
+       QDate date = calDate->selectedDate();
+       #else
+       QDate date = calDateEdit->date();
+       #endif
+       // Substitude URL
+       QString substUrl;
+       QString errorMsg;
+       if (!evaluateStaticUrl(channel.staticUrl, date, substUrl, errorMsg)) {
+               QMessageBox::warning(this, tr("Problem when substituting URL"), errorMsg);
+               return false;
+       }
+
+       // Determine player to use
+       delete player; 
+       player = 0;
+       if (channel.player.contains("vlc")) player = new VlcPlayer();
+       if (channel.player.contains("mplayer")) player = new MPlayer();
+       if (!player) {
+               QMessageBox::warning(this, tr("Unknown player"), tr("player %1 not known").arg(channel.player));
+               return false;
+       }
+
+       // Ask filename
+       QString fileName;
+       if (save) {
+               fileName = QFileDialog::getSaveFileName(this, tr("Save as ..."), QDir::homePath() + "/" + channel.name + "_" + date.toString(Qt::ISODate) +  (channel.player.contains("vlc") ? ".mpeg" : ""), (channel.player.contains("vlc") ? tr("Videos (*.mpeg)") : tr("Videos (*.*)")));
+               if (fileName.isEmpty()) return true;
+       }
+
+       // Play or Save
+       if (!player->play(substUrl, teOffset->time(), !play, fileName, errorMsg)) {
+               QMessageBox::warning(this, tr("Error while playing"), errorMsg);
+               return false;
+       }
+       return true;
+}
+
+
+
 void MainDialog::editOptions() {
        OptionsDialog *od = new OptionsDialog();
        if (od->exec(configInfo.userConfigFile)) {
@@ -292,29 +492,17 @@ void MainDialog::updateLwChannels() {
 
 
 bool MainDialog::startAction() {
-       int row = lwChannels->currentRow();
-       if (row >= 0) {
-               Channel channel = channelVec[row];
-               #if QT_VERSION >= 0x040200
-               QDate date = calDate->selectedDate();
-               #else
-               QDate date = calDateEdit->date();
-               #endif
-               QString substUrl;
-               QString errorMsg;
-               if (!evaluateStaticUrl(channel.staticUrl, date, substUrl, errorMsg)) {
-                       QMessageBox::warning(this, tr("Problem when substituting URL"), errorMsg);
-                       return false;
-               }
-               QStringList arguments;
-               arguments.append(substUrl);
-               appendPlayerOptions(channel.player, teOffset->time(), arguments);
-               QProcess player(this);
-               qDebug() << channel.player << arguments;
-               player.startDetached(channel.player, arguments);
-               return true;
-       }
-       return false;
+               return play(true, false);
+}
+
+
+bool MainDialog::startSaveAction() {
+               return play(true, true);
+}
+
+
+bool MainDialog::saveAction() {
+               return play(false, true);
 }
 
 
@@ -340,5 +528,7 @@ int main(int argc, char *argv[]) {
        MainDialog *mainDialog = new MainDialog();
        mainDialog->setWindowFlags(Qt::Window);
        mainDialog->show();
-       return app.exec();
+       int status = app.exec();
+       delete mainDialog;
+       return status;
 } 
diff --git a/main.h b/main.h
index fc15b9cf8c2f9b98c867f41815c6bd6e2ed0309b..4a95b82f449e315d587b587135001209062937bd 100644 (file)
--- a/main.h
+++ b/main.h
@@ -1,6 +1,12 @@
+/** \mainpage Teleschorsch
+ *
+ * Created by <a href="http://www.toastfreeware.priv.at/">toastfreeware</a>.
+ */
+
 #ifndef MAIN_H
 #define MAIN_H
-#if QT_VERSION >= 0x040200
+#include <QtCore>
+#ifndef QT_4_1_COMPATIBLE
 #include "ui_maindialog.h"
 #else
 #include "ui_maindialog_4.1.h"
@@ -20,6 +26,7 @@ struct Channel {
 typedef QVector<Channel> ChannelVec;
 
 
+/// Contains information about the configuration file locations
 struct ConfigInfo {
        QString home;               ///< environment variable $HOME (e.g. /home/gregoa) or empty if $HOME does not exist
        QString systemConfigFile;   ///< system configuration file name (/etc/teleschorschrc)
@@ -28,6 +35,46 @@ struct ConfigInfo {
 };
 
 
+/// Represents a media player, e.g. VLC.
+struct Player {
+       /// Name of the player, e.g. VLC.
+       QString name;
+
+       /// \brief (Optionally) play and (optionally) save an URL.
+       /// \param[in] urlToPlay specifies what should be played or saved.
+       /// \param[in] offset where to start playing in the stream
+       /// \param[in] saveOnly if the URL should _not_ be played (used to only save it).
+       /// \param[in] saveFileName If this parameter is not empty, the file is (additionally) saved to the local file.
+       /// \param[out] errorMsg if an error occurs, this parameter contains a (hopefully :-) ) easy to understand
+       ///             error message in the current language
+       /// \return true if the run was successful. If saveOnly is true and saveFileName is empty, nothing is done and true is returned.
+       virtual bool play(QString urlToPlay, QTime offset, bool saveOnly, QString saveFileName, QString& errorMsg) = 0;
+       virtual ~Player() {}
+};
+
+
+struct VlcPlayer: public Player {
+       VlcPlayer();
+       virtual bool play(QString urlToPlay, QTime offset, bool saveOnly, QString saveFileName, QString& errorMsg);
+};
+
+
+struct MPlayer: public Player {
+       MPlayer();
+       ~MPlayer();
+       QProcess* download;
+       #ifndef QT_4_1_COMPATIBLE
+       QProcess* tee;
+       QProcess* player;
+       #else
+       QProcess* shell;
+       #endif
+       QString tempFile;
+       void stopProcesses();
+       virtual bool play(QString urlToPlay, QTime offset, bool saveOnly, QString saveFileName, QString& errorMsg);
+};
+
+
 
 // Functions
 // =========
@@ -46,23 +93,54 @@ bool addConfig(const QString& fileName, ChannelVec& cv, QString& error);
 QString readChannelVec(const ConfigInfo& configInfo, ChannelVec& channelVec);
 
 
+
 // MainDialog
 // ==========
 
+/// Represents the main dialog.
 class MainDialog: public QDialog, private Ui::MainDialog {
 Q_OBJECT
 
 private:
        ChannelVec channelVec;
        ConfigInfo configInfo;
+       Player* player;
 
 public:
+       /// Constructor
        MainDialog(QWidget *parent = 0);
+       virtual ~MainDialog();
+
+private:
+       /// \brief Starts(plays) and/or saves the selected stream.
+       ///
+       /// It is used to be called by startAction(), startSaveAction() and saveAction().
+       /// \return false if player did not start successfully (true if the user aborts).
+       bool play(bool play, bool save);
 
 public slots:
+       /// Shows a dialog where the user can edit the config file.
        void editOptions();
+
+       /// Updates the "QListWidget" in the user interface that shows the cannel list.
        void updateLwChannels();
+
+       /// \brief Starts (plays) the selected stream.
+       /// \return true if player starts successfully.
        bool startAction();
+
+       /// \brief Starts (plays) and saves the selected stream.
+       /// \return true if player starts successfully.
+       bool startSaveAction();
+
+       /// \brief Saves the selected stream.
+       /// \return true if player starts successfully - the current
+       /// implementation lets the player save the stream.
+       bool saveAction();
 };
 
+
+void appendPlayerOptions(const QString& player, QTime offset, QStringList& arguments);
+
+
 #endif
index 8b688e4ff5e6e9f181b48e3fbc50b68a2a149d14..8bea8cd9e065da224a5b143d8f3c7f6945276f5d 100644 (file)
        </property>
       </widget>
      </item>
+     <item>
+      <widget class="QPushButton" name="btnStartSave" >
+       <property name="text" >
+        <string>Start &amp;&amp; Save</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="btnSave" >
+       <property name="text" >
+        <string>Save</string>
+       </property>
+      </widget>
+     </item>
      <item>
       <widget class="QPushButton" name="btnQuit" >
        <property name="text" >
         <string>Quit</string>
        </property>
        <property name="shortcut" >
-        <string/>
+        <string>Ctrl-Q</string>
        </property>
       </widget>
      </item>
   <tabstop>calDate</tabstop>
   <tabstop>teOffset</tabstop>
   <tabstop>btnStart</tabstop>
+  <tabstop>btnStartSave</tabstop>
+  <tabstop>btnSave</tabstop>
   <tabstop>btnQuit</tabstop>
   <tabstop>btnOptions</tabstop>
  </tabstops>
index 901b9065960b9f11981061353b84d314d6ea40a6..d390e7daff5219a740797998d88c5b58b37edeee 100644 (file)
        </property>
       </widget>
      </item>
+     <item>
+      <widget class="QPushButton" name="btnStartSave" >
+       <property name="text" >
+        <string>Start &amp;&amp; Save</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="btnSave" >
+       <property name="text" >
+        <string>Save</string>
+       </property>
+      </widget>
+     </item>
      <item>
       <widget class="QPushButton" name="btnQuit" >
        <property name="text" >
         <string>Quit</string>
        </property>
        <property name="shortcut" >
-        <string/>
+        <string>Ctrl-Q</string>
        </property>
       </widget>
      </item>
   <tabstop>calDateEdit</tabstop>
   <tabstop>teOffset</tabstop>
   <tabstop>btnStart</tabstop>
+  <tabstop>btnStartSave</tabstop>
+  <tabstop>btnSave</tabstop>
   <tabstop>btnQuit</tabstop>
   <tabstop>btnOptions</tabstop>
  </tabstops>
index ce70cfd21262969d5cafd04d5ca55795fd899472..e2bbc6e926be156f829df02c3350c7fb8d53f718 100644 (file)
@@ -8,11 +8,11 @@ OptionsDialog::OptionsDialog(QWidget *parent): QDialog(parent) {
 
        QString helpText = labHelp->text();
        helpText.append("<ul>");
-       helpText.append(tr("<li>${d}: day of month (01-31)</li>"));
-       helpText.append(tr("<li>${m}: month (01-12)</li>"));
-       helpText.append(tr("<li>${y}: year (last two digits)</li>"));
-       helpText.append(tr("<li>${Y}: year (4 digits)</li>"));
-       helpText.append(tr("<li>${dow_DE}: day of week in German (Montag, ...)</li>"));
+       helpText.append("<li>${d}: " + tr("day of month") + " (01-31)</li>");
+       helpText.append("<li>${m}: " + tr("month") + " (01-12)</li>");
+       helpText.append("<li>${y}: " + tr("year (last two digits)") + " </li>");
+       helpText.append("<li>${Y}: " + tr("year (4 digits)") + " </li>");
+       helpText.append("<li>${dow_DE}: " + tr("day of week in German") + " (Montag, ...)</li>");
        helpText.append("</ul>");
        labHelp->setText(helpText);
 }
index c2f8b9c1dc920d15995d594687f820e23a34927d..b92705ea841e60169ff4184745a3e0a7bf83f62c 100644 (file)
@@ -20,7 +20,7 @@ HEADERS += main.h options.h
 SOURCES += main.cpp options.cpp
 TRANSLATIONS = qteleschorsch_de.ts qteleschorsch_fr.ts
 RESOURCES = qteleschorsch.qrc
-CONFIG += stl
+CONFIG += stl
 PRE_TARGETDEPS = compiler_translation_make_all
 
 translation.output  = ${QMAKE_FILE_BASE}.qm
@@ -28,3 +28,12 @@ translation.commands = lrelease ${QMAKE_FILE_NAME}
 translation.input = TRANSLATIONS
 translation.CONFIG = no_link
 QMAKE_EXTRA_COMPILERS += translation
+
+qt_version = $$[QT_VERSION]
+lessThan (qt_version, 4.2) {
+       message(Compiling for QT < 4.2)
+       DEFINES += QT_4_1_COMPATIBLE
+       # QT_4_1_COMPATIBLE = QT_VERSION < 0x040200
+} 
+
+
index 17a36e8f3b87ed793808622d8b22077da8a5a43a..68253656d378b35b4fda091ce2fb6053ab49a8c2 100644 (file)
 <context>
     <name>MainDialog</name>
     <message>
-        <location filename="main.cpp" line="273"/>
+        <location filename="main.cpp" line="419"/>
         <source>Problem when reading the configuration file</source>
         <translation>Die Konfigurationsdatei konnte nicht gelesen werden</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="298"/>
+        <location filename="main.cpp" line="385"/>
         <source>Problem when substituting URL</source>
         <translation>Problem beim Ersetzen der Parameter in der URL</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="13"/>
+        <location filename="maindialog_4.1.ui" line="13"/>
         <source>TeleSchorsch</source>
         <translation>TeleSchorsch</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="44"/>
+        <location filename="maindialog_4.1.ui" line="44"/>
         <source>Channel</source>
         <translation>Programm/Kanal</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="77"/>
+        <location filename="maindialog_4.1.ui" line="77"/>
         <source>Date</source>
         <translation>Datum</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="99"/>
+        <location filename="maindialog_4.1.ui" line="91"/>
         <source>Offset</source>
         <translation>Offset</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="138"/>
+        <location filename="maindialog_4.1.ui" line="130"/>
         <source>Options</source>
         <translation>Optionen</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="158"/>
+        <location filename="maindialog_4.1.ui" line="150"/>
         <source>Start</source>
         <translation>Start</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="168"/>
+        <location filename="maindialog_4.1.ui" line="174"/>
         <source>Quit</source>
         <translation>Beenden</translation>
     </message>
-</context>
-<context>
-    <name>OptionsDialog</name>
     <message>
-        <location filename="options.cpp" line="11"/>
-        <source>&lt;li&gt;${d}: day of month (01-31)&lt;/li&gt;</source>
-        <translation>&lt;li&gt;${d}: Tag (01-31)&lt;/li&gt;</translation>
+        <location filename="main.cpp" line="394"/>
+        <source>Unknown player</source>
+        <translation>Unbekannter Player</translation>
     </message>
     <message>
-        <location filename="options.cpp" line="12"/>
-        <source>&lt;li&gt;${m}: month (01-12)&lt;/li&gt;</source>
-        <translation>&lt;li&gt;${m}: Monat (01-12)&lt;/li&gt;</translation>
+        <location filename="main.cpp" line="394"/>
+        <source>player %1 not known</source>
+        <translation>Player %1 unbekannt</translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="401"/>
+        <source>Save as ...</source>
+        <translation>Speichern unter ...</translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="401"/>
+        <source>Videos (*.mpeg)</source>
+        <translation>Videos (*.mpeg)</translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="401"/>
+        <source>Videos (*.*)</source>
+        <translation>Videos (*.*)</translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="406"/>
+        <source>Error while playing</source>
+        <translation>Fehler beim Abspielen</translation>
+    </message>
+    <message>
+        <location filename="maindialog_4.1.ui" line="98"/>
+        <source>HH:mm:ss</source>
+        <translation>HH:mm:ss</translation>
+    </message>
+    <message>
+        <location filename="maindialog_4.1.ui" line="160"/>
+        <source>Start &amp;&amp; Save</source>
+        <translation>Start &amp;&amp; Speichern</translation>
+    </message>
+    <message>
+        <location filename="maindialog_4.1.ui" line="167"/>
+        <source>Save</source>
+        <translation>Speichern</translation>
+    </message>
+    <message>
+        <location filename="maindialog_4.1.ui" line="177"/>
+        <source>Ctrl-Q</source>
+        <translation>Strg-Q</translation>
+    </message>
+    <message>
+        <location filename="maindialog_4.1.ui" line="84"/>
+        <source>dd MMM yyyy</source>
+        <translation>dd MMM yyyy</translation>
     </message>
+</context>
+<context>
+    <name>OptionsDialog</name>
     <message>
         <location filename="options.cpp" line="13"/>
-        <source>&lt;li&gt;${y}: year (last two digits)&lt;/li&gt;</source>
-        <translation>&lt;li&gt;${y}: Jahr (die letzten 2 Stellen)&lt;/li&gt;</translation>
+        <source>year (last two digits)</source>
+        <translation>Jahr (die letzten 2 Stellen)</translation>
     </message>
     <message>
         <location filename="options.cpp" line="14"/>
-        <source>&lt;li&gt;${Y}: year (4 digits)&lt;/li&gt;</source>
-        <translation>&lt;li&gt;${Y}: Jahr (vierstellig)&lt;/li&gt;</translation>
+        <source>year (4 digits)</source>
+        <translation>Jahr (vierstellig)</translation>
     </message>
     <message>
         <location filename="options.cpp" line="15"/>
-        <source>&lt;li&gt;${dow_DE}: day of week in German (Montag, ...)&lt;/li&gt;</source>
-        <translation>&lt;li&gt;${dow_DE}: Wochentag deutsch (Montag, ...)&lt;/li&gt;</translation>
+        <source>day of week in German</source>
+        <translation>Wochentag deutsch</translation>
     </message>
     <message>
         <location filename="options.cpp" line="23"/>
         <translation>Der Pfad der Benutzer-Konfigurationsdatei konnte nicht bestimmt werden.</translation>
     </message>
     <message>
-        <location filename="options.cpp" line="28"/>
+        <location filename="options.cpp" line="32"/>
         <source>Create user config file?</source>
         <translation>Soll eine Benutzer-Konfigurationsdatei erstellt werden?</translation>
     </message>
     <message>
-        <location filename="options.cpp" line="28"/>
+        <location filename="options.cpp" line="29"/>
         <source>The user config file %1 does not exist. Do you want to create it?</source>
         <translation>Die benutzerdefinierte Konfigurationsdatei %1 existiert nicht. Soll sie erstellt werden?</translation>
     </message>
     <message>
-        <location filename="options.cpp" line="33"/>
+        <location filename="options.cpp" line="38"/>
         <source>File not readable</source>
         <translation>Die Datei ist nicht lesbar</translation>
     </message>
     <message>
-        <location filename="options.cpp" line="33"/>
+        <location filename="options.cpp" line="38"/>
         <source>The user config file %1 is not readable.</source>
         <translation>Die benutzerdefinierte Konfigurationdatei %1 ist nicht lesbar.</translation>
     </message>
     <message>
-        <location filename="options.cpp" line="45"/>
+        <location filename="options.cpp" line="54"/>
         <source>File not writeable</source>
         <translation>Die Datei ist nicht schreibbar</translation>
     </message>
     <message>
-        <location filename="options.cpp" line="45"/>
+        <location filename="options.cpp" line="54"/>
         <source>The config file %1 is not writeable.</source>
         <translation>Die Konfigurationsdatei %1 ist nicht schreibbar.</translation>
     </message>
         <source>You may use the following special characters:</source>
         <translation>Folgende Variablen sind erlaubt:</translation>
     </message>
+    <message>
+        <location filename="options.cpp" line="32"/>
+        <source>The user config file %1
+does not exist. Do you want to create it?</source>
+        <translation>Die benutzerdefinierte Konfigurationsdatei %1
+existiert nicht. Soll sie erstellt werden?</translation>
+    </message>
+    <message>
+        <location filename="options.cpp" line="11"/>
+        <source>day of month</source>
+        <translation>Wochentag</translation>
+    </message>
+    <message>
+        <location filename="options.cpp" line="12"/>
+        <source>month</source>
+        <translation>Monat</translation>
+    </message>
 </context>
 <context>
     <name>QObject</name>
     <message>
-        <location filename="main.cpp" line="64"/>
+        <location filename="main.cpp" line="173"/>
         <source>Could not open file %1</source>
         <translation>Konnte Datei %1 nicht öffnen</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="86"/>
+        <location filename="main.cpp" line="195"/>
         <source>Property %1 is only allowed in a [section].</source>
         <translation>Bezeichner %1 darf nur in einer [sektion] verwendet werden.</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="91"/>
+        <location filename="main.cpp" line="200"/>
         <source>Unknown key in ini file: %1</source>
         <translation>Unbekannter Bezeichner in ini-Datei: %1</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="94"/>
+        <location filename="main.cpp" line="203"/>
         <source>Line %1 is not valid.</source>
         <translation>Zeile %1 hat eine ungültige Syntax.</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="102"/>
+        <location filename="main.cpp" line="211"/>
         <source>Neither %1 nor %2 found.</source>
         <translation>Weder %1 noch %2 gefunden.</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="131"/>
+        <location filename="main.cpp" line="240"/>
         <source>No match for variable %1</source>
         <translation>Die Variable %1 existiert nicht</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="162"/>
+        <location filename="main.cpp" line="271"/>
         <source>${ not closed with }.</source>
         <translation>${ wurde nicht mit } abgeschlossen.</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="189"/>
+        <location filename="main.cpp" line="298"/>
         <source>Shell command executed when substituting URL (%1) timed out.</source>
         <translation>Der Befehl zur Ersetzung der URL (%1) hat zu lange gebraucht (time out).</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="235"/>
+        <location filename="main.cpp" line="331"/>
         <source>Usage: qteleschorsch [options]</source>
         <translation>Aufruf: qteleschorsch [Optionen]</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="236"/>
+        <location filename="main.cpp" line="332"/>
         <source>Options: --help: Shows this message at the command line and exits qteleschorsch</source>
         <translation>Optionen: --help: Zeigt diese Meldung in der Eingabeaufforderung und beendet qteleschorsch</translation>
     </message>
     <message>
-        <location filename="main.cpp" line="237"/>
+        <location filename="main.cpp" line="333"/>
         <source>More help: man qteleschorsch</source>
         <translation>Mehr Hilfe: man qteleschorsch</translation>
     </message>
+    <message>
+        <location filename="main.cpp" line="54"/>
+        <source>Could not start vlc.</source>
+        <translation>vlc konnte nicht gestartet werden.</translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="69"/>
+        <source>Could not start %1.</source>
+        <translation>%1 konnte nicht gestartet werden.</translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="99"/>
+        <source>unknown error code</source>
+        <translation>Unbekannter Fehlercode</translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="101"/>
+        <source>The pipe %1 cannot be created (%2)</source>
+        <translation>Die Pipe %1 kann nicht erstellt werden (%2)</translation>
+    </message>
 </context>
 </TS>
index 067ca38e088b4419c886668be328c782a87aa361..36c7bd67ccb96610523beecd1c52d7df33f277ec 100644 (file)
 <context>
     <name>MainDialog</name>
     <message>
-        <location filename="main.cpp" line="273"/>
+        <location filename="main.cpp" line="419"/>
         <source>Problem when reading the configuration file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="298"/>
+        <location filename="main.cpp" line="385"/>
         <source>Problem when substituting URL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="13"/>
+        <location filename="maindialog_4.1.ui" line="13"/>
         <source>TeleSchorsch</source>
         <translation>TeleSchorsch</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="44"/>
+        <location filename="maindialog_4.1.ui" line="44"/>
         <source>Channel</source>
         <translation>Cha�e</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="77"/>
+        <location filename="maindialog_4.1.ui" line="77"/>
         <source>Date</source>
         <translation>Date</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="99"/>
+        <location filename="maindialog_4.1.ui" line="91"/>
         <source>Offset</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="138"/>
+        <location filename="maindialog_4.1.ui" line="130"/>
         <source>Options</source>
         <translation>Options</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="158"/>
+        <location filename="maindialog_4.1.ui" line="150"/>
         <source>Start</source>
         <translation>Démarrer</translation>
     </message>
     <message>
-        <location filename="maindialog.ui" line="168"/>
+        <location filename="maindialog_4.1.ui" line="174"/>
         <source>Quit</source>
         <translation>Terminer</translation>
     </message>
-</context>
-<context>
-    <name>OptionsDialog</name>
     <message>
-        <location filename="options.cpp" line="11"/>
-        <source>&lt;li&gt;${d}: day of month (01-31)&lt;/li&gt;</source>
+        <location filename="main.cpp" line="394"/>
+        <source>Unknown player</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="options.cpp" line="12"/>
-        <source>&lt;li&gt;${m}: month (01-12)&lt;/li&gt;</source>
+        <location filename="main.cpp" line="394"/>
+        <source>player %1 not known</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="401"/>
+        <source>Save as ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="401"/>
+        <source>Videos (*.mpeg)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="401"/>
+        <source>Videos (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="406"/>
+        <source>Error while playing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="maindialog_4.1.ui" line="98"/>
+        <source>HH:mm:ss</source>
+        <translation>HH:mm:ss</translation>
+    </message>
+    <message>
+        <location filename="maindialog_4.1.ui" line="160"/>
+        <source>Start &amp;&amp; Save</source>
+        <translation>Démarrer &amp;&amp; Sauvegarder</translation>
+    </message>
+    <message>
+        <location filename="maindialog_4.1.ui" line="167"/>
+        <source>Save</source>
+        <translation>Sauvegarder</translation>
+    </message>
+    <message>
+        <location filename="maindialog_4.1.ui" line="177"/>
+        <source>Ctrl-Q</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="maindialog_4.1.ui" line="84"/>
+        <source>dd MMM yyyy</source>
+        <translation>dd MMM yyyy</translation>
+    </message>
+</context>
+<context>
+    <name>OptionsDialog</name>
     <message>
         <location filename="options.cpp" line="13"/>
-        <source>&lt;li&gt;${y}: year (last two digits)&lt;/li&gt;</source>
+        <source>year (last two digits)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="options.cpp" line="14"/>
-        <source>&lt;li&gt;${Y}: year (4 digits)&lt;/li&gt;</source>
+        <source>year (4 digits)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="options.cpp" line="15"/>
-        <source>&lt;li&gt;${dow_DE}: day of week in German (Montag, ...)&lt;/li&gt;</source>
+        <source>day of week in German</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="options.cpp" line="28"/>
+        <location filename="options.cpp" line="32"/>
         <source>Create user config file?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="options.cpp" line="28"/>
+        <location filename="options.cpp" line="29"/>
         <source>The user config file %1 does not exist. Do you want to create it?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="options.cpp" line="33"/>
+        <location filename="options.cpp" line="38"/>
         <source>File not readable</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="options.cpp" line="33"/>
+        <location filename="options.cpp" line="38"/>
         <source>The user config file %1 is not readable.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="options.cpp" line="45"/>
+        <location filename="options.cpp" line="54"/>
         <source>File not writeable</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="options.cpp" line="45"/>
+        <location filename="options.cpp" line="54"/>
         <source>The config file %1 is not writeable.</source>
         <translation type="unfinished"></translation>
     </message>
         <source>You may use the following special characters:</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="options.cpp" line="32"/>
+        <source>The user config file %1
+does not exist. Do you want to create it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="options.cpp" line="11"/>
+        <source>day of month</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="options.cpp" line="12"/>
+        <source>month</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QObject</name>
     <message>
-        <location filename="main.cpp" line="64"/>
+        <location filename="main.cpp" line="173"/>
         <source>Could not open file %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="86"/>
+        <location filename="main.cpp" line="195"/>
         <source>Property %1 is only allowed in a [section].</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="91"/>
+        <location filename="main.cpp" line="200"/>
         <source>Unknown key in ini file: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="94"/>
+        <location filename="main.cpp" line="203"/>
         <source>Line %1 is not valid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="102"/>
+        <location filename="main.cpp" line="211"/>
         <source>Neither %1 nor %2 found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="131"/>
+        <location filename="main.cpp" line="240"/>
         <source>No match for variable %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="162"/>
+        <location filename="main.cpp" line="271"/>
         <source>${ not closed with }.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="189"/>
+        <location filename="main.cpp" line="298"/>
         <source>Shell command executed when substituting URL (%1) timed out.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="235"/>
+        <location filename="main.cpp" line="331"/>
         <source>Usage: qteleschorsch [options]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="236"/>
+        <location filename="main.cpp" line="332"/>
         <source>Options: --help: Shows this message at the command line and exits qteleschorsch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main.cpp" line="237"/>
+        <location filename="main.cpp" line="333"/>
         <source>More help: man qteleschorsch</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="main.cpp" line="54"/>
+        <source>Could not start vlc.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="69"/>
+        <source>Could not start %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="99"/>
+        <source>unknown error code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="101"/>
+        <source>The pipe %1 cannot be created (%2)</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
index 896a1f6ef6c23d72017f5af752440abf902ba807..899eba25aff12d1256ee53f39066935a81ce0e29 100644 (file)
@@ -1,13 +1,18 @@
 [ORFZIB1]
 FULLNAME=ORF - Zeit im Bild 1
-STATICURL=rtsp://81.189.213.1:554/orf2/zb/zib${y}${m}${d}l.rm?URL=/ramgen/orf2/zb/zib${y}${m}${d}l.rm&cloakport=8088,554,7070
-PLAYER=gmplayer
+STATICURL=http://stream5.orf.at/zib/zib1930_${Y}_${m}_${d}.wmv
+PLAYER=vlc
 
 [ORFZIB2]
 FULLNAME=ORF - Zeit im Bild 2
 STATICURL=http://stream5.orf.at/zib2/zib2200_${Y}_${m}_${d}.wmv
 PLAYER=vlc
 
+[ORFHEUTE]
+FULLNAME=ORF - Heute in Österreich
+STATICURL=http://stream5.orf.at/hioe/hioe_${Y}_${m}_${d}.wmv
+PLAYER=vlc
+
 [ORFVHEUTE]
 FULLNAME=ORF - Vorarlberg heute
 STATICURL=mms://stream2.orf.at/radiovorarlberg/v_heute_${dow_DE}.wmv
@@ -83,14 +88,16 @@ FULLNAME=France 3 - JT le soir national
 STATICURL=mms://sdmc.contents.edgestreams.net/horsgv/regions/siege/infos/f3/soir3/HD_soir3_${Y}${m}${d}.wmv?WMCache=0
 PLAYER=vlc
 
-#[M61250]
-#FULLNAME=M6 - le 12 50
-#STATICURL=mms://stream1.m6.fr.ipercast.net/m6.fr/6minutes/d/92/d${y}${m}${d}211151SARAV9200000.wmv
-#PLAYER=vlc
-#
+[M61250]
+FULLNAME=M6 - Le 12 50
+#STATICURL=mms://stream1.m6.fr.ipercast.net/m6.fr/6minutes/d/92/d${y}${m}${d}211050SARAV9200000.wmv
+STATICURL=http://www.m6.fr/content/video/info/asx/National12_00_${d}${m}${y}.asx
+PLAYER=vlc
+
 [M6six]
-FULLNAME=M6 - six
-STATICURL=mms://stream1.m6.fr.ipercast.net/m6.fr/6minutes/d/92/d${y}${m}${d}190000SARAV9200000.wmv
+FULLNAME=M6 - Le six'
+#STATICURL=mms://stream1.m6.fr.ipercast.net/m6.fr/6minutes/d/92/d${y}${m}${d}190000SARAV9200000.wmv
+STATICURL=http://www.m6.fr/content/video/info/asx/National_00_${d}${m}${y}.asx
 PLAYER=vlc
 
 [TF1jt13]