/*
    Copyright (C) 2006  Nicolas Le Guen <goldenear@free.fr>

    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.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#ifndef OSKAR_H
#define OSKAR_H

// KDE includes.
#include <kmainwindow.h>
#include <kaction.h>
#include <kpushbutton.h>


// Local includes.
#include "sidebar.h"
//#include "oskarbase.h"
#include "oskarview.h"

namespace Oskar
{
class Sidebar;
};

class OskarApp : public KMainWindow
{
  Q_OBJECT

public:
  OskarApp(QWidget* parent = 0, const char* name = 0);
  ~OskarApp();
  /*$PUBLIC_FUNCTIONS$*/
// --- File ---
    KAction* fileOpenAction;
    KAction* fileOpenURLAction;
    KAction* fileOpenRecentAction;
    KAction* fileClearHistoryAction;
    KAction* filePlayDiscAction;
    KAction* fileWatchTVAction;
//    KAction* fileOpenCaptureDeviceAction;
//    KAction* fileOpenPipeAction;
    KAction* fileSaveAsAction;
    KAction* fileInfoAction;
    KAction* fileExitAction;
// --- Playlist ---
    KAction* playlistNewAction;
    KAction* playlistOpenAction;
    KAction* playlistImportFileAction;
    KAction* playlistImportURLAction;
    KAction* playlistSaveAction;
    KAction* playlistSaveAsAction;
    KAction* playlistReloadAction;
// --- View ---
    KAction* viewNewWindowAction;
    KToggleAction* viewModeFullScreenAction;
    KToggleAction* viewModeBasicAction;
    KToggleAction* viewModeAdvancedAction;
    KToggleAction* viewModeMinimalAction;
    KAction* viewResizeVideoAction;
    KAction* viewResize025Action;
    KAction* viewResize050Action;
    KAction* viewResize100Action;
    KAction* viewResize150Action;
    KAction* viewResize200Action;
    KAction* viewResize300Action;
    KAction* viewResize400Action;
    KToggleAction* viewFitToWindowAction;
    KToggleAction* viewAspectRatio0Action;
    KToggleAction* viewAspectRatio1Action;
    KToggleAction* viewAspectRatio2Action;
    KToggleAction* viewAspectRatio3Action;
    KToggleAction* viewAspectRatio4Action;
    KToggleAction* viewKeepAspectRatioAction;
// --- Bookmarks ---
    KAction* bookmarksAddBookmarkAction;
    KAction* bookmarksEditBookmarksAction;
// --- Player ---
    KAction* playerPlayPauseAction;
    KAction* playerStopAction;
    KAction* playerPreviousAction;
    KAction* playerNextAction;
    KAction* playerRecordAction;
    KAction* playerIncrease_SpeedAction;
    KAction* playerDecrease_SpeedAction;
    KAction* playerNavigateAction;
    KAction* playerGo10SecBackAction;
    KAction* playerGo10SecForthAction;
    KAction* playerGoToPositionAction;
    KAction* playerMenuAction;
    KAction* playerVideoAction;
    KAction* playerAudioAction;
    KAction* playerSubtitlesAction;
    KAction* playerShuffleAction;
    KToggleAction* playerRepeatModeDisableAction;
    KToggleAction* playerRepeatModeSingleAction;
    KToggleAction* playerRepeatModePlaylistAction;
//    KAction* playerMenuMainAction;
//    KAction* playerMenuRootAction;
//    KAction* playerVideoBlankAction;
    KToggleAction* playerAudioMuteAction;
//    KAction* playerSubtitlesNoneAction;
// --- Settings ---
    KAction* settingsHideMenubarAction;
    KAction* settingsHideStatusbarAction;
    KAction* settingsHideToolbarAction;
    KToggleAction* settingsShowEqualizerAction;
    KToggleAction* settingsShowPictureControlsAction;
    KToggleAction* settingsDeinterlaceVideoAction;
    KAction* settingsConfigureShortcutsAction;
    KAction* settingsConfigureToolbarAction;
    KToggleAction* settingsSwitchBackendXineAction;
    KToggleAction* settingsSwitchBackendGstreamerAction;
    KAction* settingsConfigureOskarAction;

public slots:
  /*$PUBLIC_SLOTS$*/
// --- File ---
    virtual void fileOpen();
    virtual void fileOpenURL();
    virtual void fileOpenRecent();
    virtual void filePlayDisc();
    virtual void fileWatchTV();
//    virtual void fileOpenCaptureDevice();
//    virtual void fileOpenPipe();
    virtual void fileSaveAs();
    virtual void fileInfo();
//    virtual void fileExit();
// --- Playlist ---
    virtual void playlistNew();
    virtual void playlistOpen();
    virtual void playlistImportFile();
    virtual void playlistSave();
    virtual void playlistSaveAs();
    virtual void playlistReload();
// --- View ---
    virtual void viewNewWindow();
    virtual void viewModeFullScreen(bool);
    virtual void viewModeAdvanced(bool);
    virtual void viewModeBasic(bool);
    virtual void viewModeMinimal(bool);
    virtual void viewResize025();
    virtual void viewResize050();
    virtual void viewResize100();
    virtual void viewResize150();
    virtual void viewResize200();
    virtual void viewResize300();
    virtual void viewResize400();
    virtual void viewFitToWindow(bool);
    virtual void viewAspectRatio0();
    virtual void viewAspectRatio1();
    virtual void viewAspectRatio2();
    virtual void viewAspectRatio3();
    virtual void viewAspectRatio4();
    virtual void viewKeepAspectRatio(bool);
// --- Bookmarks ---
    virtual void bookmarksAddBookmark();
    virtual void bookmarksEditBookmarks();
// --- Player ---
    virtual void playerPlayPause();
    virtual void playerStop();
    virtual void playerPrevious();
    virtual void playerNext();
    virtual void playerRecord();
    virtual void playerGo10SecBack();
    virtual void playerGo10SecForth();
    virtual void playerGoToPosition();
    virtual void playerRepeatModeDisable(bool);
    virtual void playerRepeatModeSingle(bool);
    virtual void playerRepeatModePlaylist(bool);
    virtual void playerShuffle(bool);
    virtual void playerAudioMute(bool);
// --- Settings ---
    virtual void settingsHideMenubar(bool);
//    virtual void settingsHideToolbar(bool);
    virtual void settingsHideStatusbar(bool);
    virtual void settingsShowEqualizer(bool);
    virtual void settingsShowPictureControls(bool);
    virtual void settingsDeinterlaceVideo(bool);
    virtual void settingsSwitchBackendGstreamer(bool);
    virtual void settingsSwitchBackendXine(bool);
    virtual void settingsConfigureOskar();

protected:
  /*$PROTECTED_FUNCTIONS$*/
  void setupActions();
  OskarView *mView;

protected slots:
  /*$PROTECTED_SLOTS$*/

};

#endif

