[vlc-devel] [PATCH 3/3] Add a simple "download"-button to the Qt-interface
Mario Speiß
1034-135 at online.de
Sat Jan 5 22:12:48 CET 2013
This sets the input_item_t->i_download flag and feeds the playlist fetcher
with the item to download the content to hdd. This completes the previous
patches.
Regards,
Mario
---
modules/gui/qt4/actions_manager.cpp | 32 +++++++++++++++++++++++++++++
modules/gui/qt4/actions_manager.hpp | 2 +
modules/gui/qt4/components/controller.cpp | 5 ++++
modules/gui/qt4/components/controller.hpp | 8 ++++--
4 files changed, 44 insertions(+), 3 deletions(-)
mode change 100644 => 100755 modules/gui/qt4/actions_manager.cpp
mode change 100644 => 100755 modules/gui/qt4/actions_manager.hpp
mode change 100644 => 100755 modules/gui/qt4/components/controller.cpp
mode change 100644 => 100755 modules/gui/qt4/components/controller.hpp
diff --git a/modules/gui/qt4/actions_manager.cpp b/modules/gui/qt4/actions_manager.cpp
index fa3703b..8e73928
--- a/modules/gui/qt4/actions_manager.cpp
+++ b/modules/gui/qt4/actions_manager.cpp
@@ -97,6 +97,9 @@ void ActionsManager::doAction( int id_action )
if( p_intf->p_sys->p_mi )
p_intf->p_sys->p_mi->getFullscreenControllerWidget()->toggleFullwidth();
break;
+ case DOWNLOAD_ACTION:
+ download();
+ break;
default:
msg_Dbg( p_intf, "Action: %i", id_action );
break;
@@ -146,6 +149,35 @@ void ActionsManager::playlist()
if( p_intf->p_sys->p_mi ) p_intf->p_sys->p_mi->togglePlaylist();
}
+void ActionsManager::download()
+{
+ playlist_t *p_playlist = pl_Get( p_intf );
+ if( p_playlist )
+ {
+ playlist_item_t * p_playlist_item = playlist_CurrentPlayingItem(p_playlist);
+ if( p_playlist_item->p_input )
+ {
+ input_item_t* p_item = p_playlist_item->p_input;//p_playlist->current.p_elems[p_playlist->i_current_index]->p_input;
+ if( p_item->i_download <= 0 )
+ {
+ if( strncmp( p_item->psz_uri , "http://", 7 ) && strncmp( p_item->psz_uri , "https://", 8 ) && strncmp( p_item->psz_uri , "ftp://", 5 ) )
+ {
+ /* no http, https or ftp => no download! */
+ p_item->i_download = 1;
+ return;
+ }
+ /* set download flag */
+ p_item->i_download =- 1;
+ playlist_AskForArtEnqueue( pl_Get(p_intf), p_item );
+ /* stop the playback to not interfere with the download
+ * (this is not neccessary but nevertheless...
+ */
+ THEMIM->stop();
+ }
+ }
+ }
+}
+
void ActionsManager::record()
{
input_thread_t *p_input = THEMIM->getInput();
diff --git a/modules/gui/qt4/actions_manager.hpp b/modules/gui/qt4/actions_manager.hpp
index a694579..7a4825d
--- a/modules/gui/qt4/actions_manager.hpp
+++ b/modules/gui/qt4/actions_manager.hpp
@@ -56,6 +56,7 @@ typedef enum actionType_e
LOOP_ACTION,
INFO_ACTION,
OPEN_SUB_ACTION,
+ DOWNLOAD_ACTION,
} actionType_e;
class ActionsManager : public QObject
@@ -90,6 +91,7 @@ public slots:
void record();
void skipForward();
void skipBackward();
+ void download();
protected slots:
void fullscreen();
void snapshot();
diff --git a/modules/gui/qt4/components/controller.cpp b/modules/gui/qt4/components/controller.cpp
index 44de18a..6323d2e
--- a/modules/gui/qt4/components/controller.cpp
+++ b/modules/gui/qt4/components/controller.cpp
@@ -308,6 +308,11 @@ QWidget *AbstractController::createWidget( buttonType_e button, int options )
NORMAL_BUTTON( FULLWIDTH );
}
break;
+ case DOWNLOAD_BUTTON: {
+ NORMAL_BUTTON( DOWNLOAD );
+ ENABLE_ON_INPUT( DOWNLOADButton );
+ }
+ break;
case EXTENDED_BUTTON:{
NORMAL_BUTTON( EXTENDED );
}
diff --git a/modules/gui/qt4/components/controller.hpp b/modules/gui/qt4/components/controller.hpp
index 1df8703..c0e174b
--- a/modules/gui/qt4/components/controller.hpp
+++ b/modules/gui/qt4/components/controller.hpp
@@ -89,6 +89,7 @@ typedef enum buttonType_e
NEXT_BUTTON,
OPEN_SUB_BUTTON,
FULLWIDTH_BUTTON,
+ DOWNLOAD_BUTTON,
BUTTON_MAX,
SPLITTER = 0x20,
@@ -118,7 +119,7 @@ static const char* const nameL[BUTTON_MAX] = { N_("Play"), N_("Stop"), N_("Open"
N_("Record"), N_("A->B Loop"), N_("Frame By Frame"), N_("Trickplay Reverse"),
N_("Step backward" ), N_("Step forward"), N_("Quit"), N_("Random"),
N_("Loop / Repeat"), N_("Information"), N_("Previous"), N_("Next"),
- N_("Open subtitles"), N_("Dock fullscreen controller")
+ N_("Open subtitles"), N_("Dock fullscreen controller"), N_("Download")
};
static const char* const tooltipL[BUTTON_MAX] = { I_PLAY_TOOLTIP,
N_("Stop playback"), N_("Open a medium"),
@@ -132,7 +133,8 @@ static const char* const tooltipL[BUTTON_MAX] = { I_PLAY_TOOLTIP,
N_("Random"), N_("Change the loop and repeat modes"), N_("Information"),
N_("Previous media in the playlist"), N_("Next media in the playlist"),
N_("Open subtitles file"),
- N_("Dock/undock fullscreen controller to/from bottom of screen")
+ N_("Dock/undock fullscreen controller to/from bottom of screen"),
+ N_("Download this file")
};
static const QString iconL[BUTTON_MAX] ={ ":/toolbar/play_b", ":/toolbar/stop_b",
":/toolbar/eject", ":/toolbar/previous_b", ":/toolbar/next_b",
@@ -142,7 +144,7 @@ static const QString iconL[BUTTON_MAX] ={ ":/toolbar/play_b", ":/toolbar/stop_b"
":/toolbar/frame", ":/toolbar/reverse", ":/toolbar/skip_back",
":/toolbar/skip_fw", ":/toolbar/clear", ":/buttons/playlist/shuffle_on",
":/buttons/playlist/repeat_all", ":/menu/info",
- ":/toolbar/previous_b", ":/toolbar/next_b", ":/toolbar/eject", ":/toolbar/space"
+ ":/toolbar/previous_b", ":/toolbar/next_b", ":/toolbar/eject", ":/toolbar/space", ":/dropzone"
};
enum
--
1.7.5.4
More information about the vlc-devel
mailing list