/* * * $Id: k3b.h 619556 2007-01-03 17:38:12Z trueg $ * Copyright (C) 1998-2007 Sebastian Trueg <trueg@k3b.org> * * This file is part of the K3b project. * Copyright (C) 1998-2007 Sebastian Trueg <trueg@k3b.org> * * 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 2 of the License, or * (at your option) any later version. * See the file "COPYING" for the exact licensing terms. */ #ifndef K3B_H #define K3B_H #ifdef HAVE_CONFIG_H #include <config.h> #endif // include files for TQt #include <tqstrlist.h> #include <tqworkspace.h> #include <tqptrlist.h> // include files for KDE #include <tdeapplication.h> #include <tdeparts/dockmainwindow.h> #include <kdockwidget.h> #include <tdeaction.h> #include <kurl.h> class TQVBox; // forward declaration of the K3b classes class K3bMainWindow; class K3bDoc; class K3bView; class K3bDirView; class K3bExternalBinManager; class K3bOptionDialog; class K3bJob; class K3bProjectTabWidget; class K3bSongManager; class KSystemTray; class K3bStatusBarManager; class K3bProjectInterface; class K3bThemedHeader; namespace K3bDevice { class DeviceManager; class Device; } class K3bMainWindow : public KParts::DockMainWindow { Q_OBJECT public: /** construtor of K3bMainWindow, calls all init functions to create the application. * @see initMenuBar initToolBar */ K3bMainWindow(); ~K3bMainWindow(); /** opens a file specified by commandline option */ K3bDoc* openDocument( const KURL& url = KURL() ); K3bDevice::DeviceManager* deviceManager() const; K3bExternalBinManager* externalBinManager() const; TDEConfig* config() const { return m_config; } // return main window with browser/cd/dvd view, used for DND K3bDirView* mainWindow() const { return m_dirView; } /** * @returns a pointer to the currently visible view or 0 if no project was created */ K3bView* activeView() const; /** * @returns a pointer to the doc associated with the currently visible view or 0 if no project was created */ K3bDoc* activeDoc() const; const TQPtrList<K3bDoc>& projects() const; bool eject(); void showOptionDialog( int = 0 ); /** Creates the main view of the KDockMainWindow instance and initializes the MDI view area including any needed * connections. * must be called after construction */ void initView(); KSystemTray* systemTray() const { return m_systemTray; } public slots: K3bDoc* slotNewAudioDoc(); K3bDoc* slotNewDataDoc(); K3bDoc* slotNewMixedDoc(); K3bDoc* slotNewVcdDoc(); K3bDoc* slotNewMovixDoc(); K3bDoc* slotNewMovixDvdDoc(); K3bDoc* slotNewDvdDoc(); K3bDoc* slotNewVideoDvdDoc(); K3bDoc* slotContinueMultisession(); void slotClearProject(); void blankCdrw( K3bDevice::Device* ); void slotBlankCdrw(); void formatDvd( K3bDevice::Device* ); void slotFormatDvd(); void slotWriteCdImage(); void slotWriteCdImage( const KURL& url ); void slotWriteDvdIsoImage(); void slotWriteDvdIsoImage( const KURL& url ); void cdCopy( K3bDevice::Device* ); void slotCdCopy(); void dvdCopy( K3bDevice::Device* ); void slotDvdCopy(); void cddaRip( K3bDevice::Device* ); void slotCddaRip(); void videoDvdRip( K3bDevice::Device* ); void slotVideoDvdRip(); void videoCdRip( K3bDevice::Device* ); void slotVideoCdRip(); void slotK3bSetup(); void slotErrorMessage(const TQString&); void slotWarningMessage(const TQString&); void slotConfigureKeys(); void slotShowTips(); void slotCheckSystem(); void addUrls( const KURL::List& urls ); signals: void initializationInfo( const TQString& ); void configChanged( TDEConfig* c ); protected: /** queryClose is called by KTMainWindow on each closeEvent of a window. Against the * default implementation (only returns true), this overridden function retrieves all modified documents * from the open document list and asks the user to select which files to save before exiting the application. * @see KTMainWindow#queryClose * @see KTMainWindow#closeEvent */ virtual bool queryClose(); /** queryExit is called by KTMainWindow when the last window of the application is going to be closed during the closeEvent(). * Against the default implementation that just returns true, this calls saveOptions() to save the settings of the last window's * properties. * @see KTMainWindow#queryExit * @see KTMainWindow#closeEvent */ virtual bool queryExit(); /** saves the window properties for each open window during session end to the session config file, including saving the currently * opened file by a temporary filename provided by TDEApplication. * @see KTMainWindow#saveProperties */ virtual void saveProperties(TDEConfig *_cfg); /** reads the session config file and restores the application's state including the last opened files and documents by reading the * temporary files saved by saveProperties() * @see KTMainWindow#readProperties */ virtual void readProperties(TDEConfig *_cfg); /** * checks if doc is modified and asks the user for saving if so. * returns false if the user chose cancel. */ bool canCloseDocument( K3bDoc* ); virtual void showEvent( TQShowEvent* e ); private slots: /** open a file and load it into the document*/ void slotFileOpen(); /** opens a file from the recent files menu */ void slotFileOpenRecent(const KURL& url); /** save a document */ void slotFileSave(); /** save a document by a new filename*/ void slotFileSaveAs(); void slotFileSaveAll(); /** asks for saving if the file is modified, then closes the actual file and window*/ void slotFileClose(); void slotFileCloseAll(); void slotDirTreeDockHidden(); void slotContentsDockHidden(); void slotSettingsConfigure(); /** checks if the currently visible tab is a k3bview or not and dis- or enables some actions */ void slotCurrentDocChanged(); void slotFileQuit(); /** toggles the statusbar */ void slotViewStatusBar(); void slotViewDocumentHeader(); void slotCheckDockWidgetStatus(); /** changes the statusbar contents for the standard label permanently, used to indicate current actions. * @param text the text that is displayed in the statusbar */ void slotStatusMsg(const TQString &text); void slotShowDirTreeView(); void slotShowContentsView(); void slotShowMenuBar(); void slotProjectAddFiles(); void slotEditToolbars(); void slotNewToolBarConfig(); void slotDataImportSession(); void slotDataClearImportedSession(); void slotEditBootImages(); void slotAudioServerError( const TQString& error ); void createClient(K3bDoc* doc); /** * Run slotCheckSystem with a timer */ void slotCheckSystemTimed(); private: void fileSave( K3bDoc* doc = 0 ); void fileSaveAs( K3bDoc* doc = 0 ); void closeProject( K3bDoc* ); /** 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(); /** read general Options again and initialize all variables like the recent file list */ void readOptions(); /** initializes the TDEActions of the application */ void initActions(); /** sets up the statusbar for the main window by initialzing a statuslabel. */ void initStatusBar(); bool isCdDvdImageAndIfSoOpenDialog( const KURL& url ); /** the configuration object of the application */ TDEConfig *m_config; /** The MDI-Interface is managed by this tabbed view */ K3bProjectTabWidget* m_documentTab; // TDEAction pointers to enable/disable actions TDEActionMenu* actionFileNewMenu; TDEAction* actionFileNewAudio; TDEAction* actionFileNewData; TDEAction* actionFileNewMixed; TDEAction* actionFileNewVcd; TDEAction* actionFileNewMovix; TDEAction* actionFileNewMovixDvd; TDEAction* actionFileNewDvd; TDEAction* actionFileNewVideoDvd; TDEAction* actionFileContinueMultisession; TDEAction* actionFileOpen; TDERecentFilesAction* actionFileOpenRecent; TDEAction* actionFileSave; TDEAction* actionFileSaveAs; TDEAction* actionFileSaveAll; TDEAction* actionFileClose; TDEAction* actionFileCloseAll; TDEAction* actionFileQuit; TDEAction* actionSettingsConfigure; TDEAction* actionSettingsK3bSetup; TDEAction* actionToolsBlankCdrw; TDEAction* actionToolsWriteCdImage; TDEAction* actionToolsCddaRip; TDEAction* actionToolsVideoDvdRip; TDEAction* actionToolsVideoCdRip; TDEAction* actionCdCopy; TDEAction* actionProjectAddFiles; TDEToggleAction* actionViewStatusBar; TDEToggleAction* actionViewDirTreeView; TDEToggleAction* actionViewContentsView; TDEToggleAction* actionViewDocumentHeader; // project actions TQPtrList<TDEAction> m_dataProjectActions; KDockWidget* mainDock; KDockWidget* m_contentsDock; KDockWidget* m_dirTreeDock; // The K3b-specific widgets K3bDirView* m_dirView; K3bOptionDialog* m_optionDialog; K3bStatusBarManager* m_statusBarManager; KSystemTray* m_systemTray; bool m_initialized; // the funny header K3bThemedHeader* m_documentHeader; class Private; Private* d; }; #endif // K3B_H