You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
388 lines
14 KiB
388 lines
14 KiB
/***************************************************************************
|
|
kplayer.h
|
|
---------
|
|
begin : Sat Nov 16 10:12:50 EST 2002
|
|
copyright : (C) 2002-2007 by kiriuja
|
|
email : http://kplayer.sourceforge.net/email.html
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation, either version 3 of the License, or *
|
|
* (at your option) any later version. *
|
|
***************************************************************************/
|
|
|
|
#ifndef KPLAYER_H
|
|
#define KPLAYER_H
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
#include <tdeaction.h>
|
|
#include <tdemainwindow.h>
|
|
#include <kuniqueapplication.h>
|
|
|
|
#include "kplayerengine.h"
|
|
|
|
class KPlayerActionList;
|
|
class KPlayerLibraryWindow;
|
|
class KPlayerLogWindow;
|
|
class KPlayerNodeView;
|
|
class KPlayerPlaylist;
|
|
class KPlayerWorkspace;
|
|
class KStatusBarLabel;
|
|
class TDEToggleAction;
|
|
class KURL;
|
|
class TQMenuData;
|
|
|
|
#define MAIN_TOOLBAR 0
|
|
#define PLAYLIST_TOOLBAR 1
|
|
#define FIRST_SLIDER_TOOLBAR 2
|
|
#define PROGRESS_TOOLBAR 2
|
|
#define VOLUME_TOOLBAR 3
|
|
#define FIRST_VIDEO_TOOLBAR 4
|
|
#define CONTRAST_TOOLBAR 4
|
|
#define BRIGHTNESS_TOOLBAR 5
|
|
#define HUE_TOOLBAR 6
|
|
#define SATURATION_TOOLBAR 7
|
|
#define KPLAYER_TOOLBARS 8
|
|
|
|
/** The KPlayer main window class.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayer : public TDEMainWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
typedef struct _Toolbar
|
|
{
|
|
const char* name;
|
|
const char* action;
|
|
bool normally_visible;
|
|
bool fullscreen_visible;
|
|
} Toolbar;
|
|
|
|
public:
|
|
/** Constructor. Parameters are passed to TDEMainWindow constructor. */
|
|
KPlayer (TQWidget* parent=0, const char *name=0);
|
|
/** Destructor. */
|
|
virtual ~KPlayer() { }
|
|
|
|
/** Engine. */
|
|
KPlayerEngine* engine (void) const
|
|
{ return KPlayerEngine::engine(); }
|
|
/** Configuration. */
|
|
KPlayerConfiguration* configuration (void) const
|
|
{ return engine() -> configuration(); }
|
|
/** Settings. */
|
|
KPlayerSettings* settings (void) const
|
|
{ return engine() -> settings(); }
|
|
/** Process. */
|
|
KPlayerProcess* process (void) const
|
|
{ return engine() -> process(); }
|
|
|
|
/** Main config. */
|
|
TDEConfig* config (void) const
|
|
{ return KPlayerEngine::engine() -> config(); }
|
|
|
|
/** Playlist. */
|
|
KPlayerPlaylist* playlist (void) const
|
|
{ return m_playlist; }
|
|
/** Library. */
|
|
KPlayerLibraryWindow* library (void) const
|
|
{ return m_library; }
|
|
/** Log. */
|
|
KPlayerLogWindow* log (void) const
|
|
{ return m_log; }
|
|
|
|
/** Starts playing a new file. */
|
|
void start (void);
|
|
/** Logs a message if logging of KPlayer messages is enabled. */
|
|
void log (TQString);
|
|
|
|
/** Shows or hides the menu bar according to the current settings and updates the user interface. */
|
|
void showMenubar (void);
|
|
/** Shows or hides the given toolbar according to the current settings and updates the user interface. */
|
|
void showToolbar (int);
|
|
/** Shows or hides the given toolbar and updates the user interface. */
|
|
void showToolbar (int, bool);
|
|
/** Shows or hides the status bar according to the current settings and updates the user interface. */
|
|
void showStatusbar (void);
|
|
|
|
/** Shows or hides the library according to the current settings and updates the user interface. */
|
|
void showLibrary (void);
|
|
/** Shows or hides the library and updates the user interface. */
|
|
void showLibrary (bool);
|
|
|
|
/** Shows or hides the message log according to the current settings and updates the user interface. */
|
|
void showMessageLog (void);
|
|
/** Shows or hides the message log and updates the user interface. */
|
|
void showMessageLog (bool);
|
|
|
|
/** Calculates the size hint for the main window. */
|
|
//virtual TQSize sizeHint (void) const;
|
|
/** Calculates the minimum size hint for the main window. */
|
|
virtual TQSize minimumSizeHint (void) const;
|
|
/** Sets the minimum size of the main widget. */
|
|
virtual void setMinimumSize (int, int);
|
|
|
|
/** Returns the full screen state. */
|
|
bool isFullScreen (void) const;
|
|
/** Changes to full screen. */
|
|
void toFullScreen (void);
|
|
/** Changes to normal screen size. */
|
|
void toNormalScreen (void);
|
|
|
|
/** Replacement for broken TQWidget::isMaximized. */
|
|
bool isMaximized (void) const;
|
|
/** Replacement for broken TQWidget::showMaximized. */
|
|
virtual void showMaximized (void);
|
|
/** Calls base class implementation. */
|
|
virtual void showNormal (void);
|
|
|
|
protected:
|
|
/** Returns the total available geometry. */
|
|
TQRect availableGeometry (void) const;
|
|
/** Resizes the main window in response to a zoom request. */
|
|
void do_zoom (void);
|
|
/** Moves the main window if it does not fit the available screen space. */
|
|
void do_move (const TQRect& frame);
|
|
/** Sets up actions and connects signals to slots. */
|
|
void initActions (void);
|
|
/** Sets up the status bar. */
|
|
void initStatusBar (void);
|
|
|
|
/** Save general options like all bar positions and status as well as the geometry
|
|
and the recent file list to the configuration file. */
|
|
void saveOptions (void);
|
|
/** Read general options again and initialize all variables like the recent file list. */
|
|
void readOptions (void);
|
|
/** Saves the current URLs during session end to the session config file.
|
|
@see TDEMainWindow#saveProperties */
|
|
//virtual void saveProperties (TDEConfig*) const;
|
|
/** Restores the URLs from the session config file.
|
|
@see TDEMainWindow#readProperties */
|
|
//virtual void readProperties (TDEConfig*);
|
|
|
|
/** Enables or disables player actions. */
|
|
void enablePlayerActions (void);
|
|
/** Enables or disables video actions. */
|
|
void enableVideoActions (void);
|
|
/** Enables or disables subtitle actions. */
|
|
void enableSubtitleActions (void);
|
|
/** Enables or disables, checks or unchecks zoom actions. */
|
|
void enableZoomActions (void);
|
|
/** Checks or unchecks bar actions. */
|
|
//void checkBarActions (void);
|
|
|
|
/** Enables or disables submenus of the given menu with the given name. */
|
|
void enableSubmenu (TQMenuData* data, const TQString& name, bool enable);
|
|
/** Returns the top level popup menu at the given position. */
|
|
TQPopupMenu* popupMenu (int index);
|
|
|
|
/** Enables a toolbar.
|
|
* @param index the toolbar number
|
|
*/
|
|
void enableToolbar (int index);
|
|
/** Disables a toolbar.
|
|
* @param index the toolbar number
|
|
*/
|
|
void disableToolbar (int index);
|
|
|
|
/** Changes the statusbar contents for the standard label permanently, used to indicate current actions. */
|
|
void setStatusText (const TQString&);
|
|
|
|
/** Processes the widget events. Passes them on to TDEMainWindow. */
|
|
//virtual bool event (TQEvent*);
|
|
/** Sets the window geometry on the initial show event. */
|
|
virtual void showEvent (TQShowEvent*);
|
|
virtual void windowActivationChange (bool);
|
|
virtual void focusInEvent (TQFocusEvent*);
|
|
virtual void focusOutEvent (TQFocusEvent*);
|
|
/** Handles main window movement. */
|
|
virtual void moveEvent (TQMoveEvent*);
|
|
/** Handles main window resizing. */
|
|
virtual void resizeEvent (TQResizeEvent*);
|
|
/** Displays the right click popup menu. */
|
|
virtual void contextMenuEvent (TQContextMenuEvent*);
|
|
/** Handles the drag enter event. */
|
|
virtual void dragEnterEvent (TQDragEnterEvent*);
|
|
/** Handles the drop event. */
|
|
virtual void dropEvent (TQDropEvent*);
|
|
/** Saves options and stops KPlayer engine. */
|
|
virtual void closeEvent (TQCloseEvent*);
|
|
|
|
/** Retrieves an action from the actionCollection by name. */
|
|
TDEAction* action (const char* name) const
|
|
{ return actionCollection() -> action (name); }
|
|
/** Retrieves a toggle action from the actionCollection by name. */
|
|
TDEToggleAction* toggleAction (const char* name) const
|
|
{ return (TDEToggleAction*) action (name); }
|
|
|
|
/** Rearranges child windows and clears events. */
|
|
void activateLayout (void);
|
|
/** Syncronizes X Server and TQt events. */
|
|
//void syncronizeEvents (void);
|
|
|
|
/** The log window object. */
|
|
KPlayerLogWindow* m_log;
|
|
/** The playlist object. */
|
|
KPlayerPlaylist* m_playlist;
|
|
/** The library window. */
|
|
KPlayerLibraryWindow* m_library;
|
|
|
|
// Following should be private.
|
|
bool m_menubar_normally_visible, m_menubar_fullscreen_visible;
|
|
bool m_statusbar_normally_visible, m_statusbar_fullscreen_visible;
|
|
bool m_messagelog_normally_visible, m_messagelog_fullscreen_visible;
|
|
bool m_library_normally_visible, m_library_fullscreen_visible;
|
|
bool m_set_display_size, m_initial_show, m_error_detected, m_maximized;
|
|
bool m_full_screen, m_show_log, m_show_library;
|
|
Toolbar m_toolbar [KPLAYER_TOOLBARS];
|
|
TQSize m_previous_size, m_video_size;
|
|
TQRect m_normal_geometry;
|
|
KStatusBarLabel *m_status_label, *m_state_label, *m_progress_label;
|
|
|
|
public slots:
|
|
/** Resets the zooming flag when the main window state changes. */
|
|
void windowStateChanged (uint wid);
|
|
/** Syncronizes full screen and maximized settings. */
|
|
void syncronize (bool);
|
|
/** Zooms the video to the correct size. */
|
|
void zoom (void);
|
|
/** Sets the correct display size. */
|
|
void correctSize (void);
|
|
/** Adjusts the initial display size. */
|
|
void initialSize (void);
|
|
|
|
/** Enables or disables submenus with the given name. */
|
|
void enableSubmenu (const TQString& name, bool enable);
|
|
|
|
/** Shows the message log if there have been errors. */
|
|
void statusPressed (void);
|
|
|
|
/** Resets the player status. */
|
|
void playlistStarted (void);
|
|
/** Updates the caption and progress information. */
|
|
void playlistActivated (void);
|
|
/** Clears the error condition if any. */
|
|
void playlistStopped (void);
|
|
|
|
/** Clears all messages from the message log. */
|
|
void fileClearLog (void);
|
|
/** Ends the program by closing the main window. */
|
|
void fileQuit (void);
|
|
|
|
/** Shows or hides the playlist. */
|
|
void viewPlaylist (void);
|
|
/** Shows or hides the multimedia library. */
|
|
void viewLibrary (void);
|
|
/** Shows or hides the message log. */
|
|
void viewMessageLog (void);
|
|
|
|
/** Toggles the menu bar. */
|
|
void viewMenubar (void);
|
|
/** Toggles the status bar. */
|
|
void viewStatusbar (void);
|
|
|
|
/** Toggles the main toolbar. */
|
|
void viewMainToolbar (void);
|
|
/** Toggles the progress toolbar. */
|
|
void viewProgressToolbar (void);
|
|
/** Toggles the volume toolbar. */
|
|
void viewVolumeToolbar (void);
|
|
/** Toggles the brightness toolbar. */
|
|
void viewBrightnessToolbar (void);
|
|
/** Toggles the contrast toolbar. */
|
|
void viewContrastToolbar (void);
|
|
/** Toggles the hue toolbar. */
|
|
void viewHueToolbar (void);
|
|
/** Toggles the Saturation toolbar. */
|
|
void viewSaturationToolbar (void);
|
|
/** Opens the the standard key binding dialog. */
|
|
void settingsKeyBindings (void);
|
|
/** Opens the the standard toolbar configuration dialog. */
|
|
void settingsConfigureToolbars (void);
|
|
/** Applies changes made in the toolbar configuration dialog. */
|
|
void newToolbarConfiguration (void);
|
|
/** Opens the KPlayer configuration dialog. */
|
|
void settingsConfigure (void);
|
|
|
|
/** Opens the KPlayer manual section on bug reporting. */
|
|
void helpReportBug (void);
|
|
|
|
/** Changes the statusbar test temporarily, used to display a hint on the currently highlighted action. */
|
|
void setStatusMessage (const TQString&);
|
|
/** Clears the temporary statusbar text when the action is no longer highlighted. */
|
|
void clearStatusMessage (void);
|
|
|
|
/** Handles bar orientation change event. */
|
|
//void barOrientationChanged (Orientation);
|
|
/** Handles bar place change event. */
|
|
//void barPlaceChanged (TQDockWindow::Place);
|
|
/** Handles bar visibility change event. */
|
|
//void barVisibilityChanged (bool);
|
|
|
|
protected slots:
|
|
/** Receives the stateChanged signal from KPlayerProcess. */
|
|
void playerStateChanged (KPlayerProcess::State, KPlayerProcess::State);
|
|
/** Receives the progressChanged signal from KPlayerProcess. */
|
|
void playerProgressChanged (float, KPlayerProcess::ProgressType);
|
|
/** Receives the infoAvailable signal from KPlayerProcess. */
|
|
void playerInfoAvailable (void);
|
|
/** Receives the sizeAvailable signal from KPlayerProcess. */
|
|
void playerSizeAvailable (void);
|
|
/** Receives the messageReceived signal from KPlayerProcess. */
|
|
void playerMessageReceived (TQString);
|
|
/** Receives the errorDetected signal from KPlayerProcess. */
|
|
void playerErrorDetected (void);
|
|
/** Receives the windowHidden signal from KPlayerLogWindow. Updates the menu item. */
|
|
void logWindowHidden (void);
|
|
/** Receives the windowHidden signal from KPlayerLibraryWindow. Updates the menu item. */
|
|
void libraryHidden (void);
|
|
/** Receives the updated signal from KPlayerSettings. Updates the slider settings. */
|
|
void refreshSettings (void);
|
|
/** Receives the updated signal from KPlayerProperties. Updates the window caption. */
|
|
void refreshProperties (void);
|
|
/** Sets the desired display size. */
|
|
void setDisplaySize (void);
|
|
|
|
/** Shows the library window. */
|
|
void makeLibraryVisible (void);
|
|
/** Unplugs the action list. */
|
|
void actionListUpdating (KPlayerActionList* list);
|
|
/** Plugs the action list and enables the menu. */
|
|
void actionListUpdated (KPlayerActionList* list);
|
|
/** Plugs the action list and enables the menu if the library is visible. */
|
|
void libraryActionListUpdated (KPlayerActionList* list);
|
|
|
|
/** Displays the right click popup menu at the given position. */
|
|
void contextMenu (const TQPoint& global_position);
|
|
};
|
|
|
|
/** The KPlayer application class.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerApplication : public KUniqueApplication
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
/** Constructs the KPlayer application. */
|
|
KPlayerApplication (void);
|
|
/** KPlayer application destructor. */
|
|
virtual ~KPlayerApplication();
|
|
|
|
/** Creates the main window on the first invokation. Calls KPlayer::start(). */
|
|
virtual int newInstance (void);
|
|
|
|
/** Remembers the shift key state. */
|
|
virtual bool notify (TQObject*, TQEvent*);
|
|
|
|
//int x11ClientMessage (TQWidget* widget, XEvent* event, bool passive_only);
|
|
};
|
|
|
|
#endif
|