update changelog
[debian/teleschorsch.git] / main.h
diff --git a/main.h b/main.h
index e9d01c53a0bda21e5184d3fe050d3a3eba6e4790..4a95b82f449e315d587b587135001209062937bd 100644 (file)
--- a/main.h
+++ b/main.h
@@ -1,6 +1,16 @@
+/** \mainpage Teleschorsch
+ *
+ * Created by <a href="http://www.toastfreeware.priv.at/">toastfreeware</a>.
+ */
+
 #ifndef MAIN_H
 #define MAIN_H
 #ifndef MAIN_H
 #define MAIN_H
+#include <QtCore>
+#ifndef QT_4_1_COMPATIBLE
 #include "ui_maindialog.h"
 #include "ui_maindialog.h"
+#else
+#include "ui_maindialog_4.1.h"
+#endif
 
 // Types
 // =====
 
 // Types
 // =====
@@ -16,6 +26,7 @@ struct Channel {
 typedef QVector<Channel> ChannelVec;
 
 
 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)
 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)
@@ -24,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
 // =========
 
 // Functions
 // =========
@@ -42,23 +93,54 @@ bool addConfig(const QString& fileName, ChannelVec& cv, QString& error);
 QString readChannelVec(const ConfigInfo& configInfo, ChannelVec& channelVec);
 
 
 QString readChannelVec(const ConfigInfo& configInfo, ChannelVec& channelVec);
 
 
+
 // MainDialog
 // ==========
 
 // MainDialog
 // ==========
 
+/// Represents the main dialog.
 class MainDialog: public QDialog, private Ui::MainDialog {
 Q_OBJECT
 
 private:
        ChannelVec channelVec;
        ConfigInfo configInfo;
 class MainDialog: public QDialog, private Ui::MainDialog {
 Q_OBJECT
 
 private:
        ChannelVec channelVec;
        ConfigInfo configInfo;
+       Player* player;
 
 public:
 
 public:
+       /// Constructor
        MainDialog(QWidget *parent = 0);
        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:
 
 public slots:
+       /// Shows a dialog where the user can edit the config file.
        void editOptions();
        void editOptions();
+
+       /// Updates the "QListWidget" in the user interface that shows the cannel list.
        void updateLwChannels();
        void updateLwChannels();
+
+       /// \brief Starts (plays) the selected stream.
+       /// \return true if player starts successfully.
        bool startAction();
        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
 #endif