/*
    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
*/

// QT includes.
#include <iostream.h>
#include <qlabel.h>
#include <qlayout.h>

// KDE includes.
#include <kmainwindow.h>
#include <kaction.h>
#include <kiconloader.h>
#include <kpushbutton.h>
//#include <kapplication.h>
#include <kmultitabbar.h>
#include <klocale.h>

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

OskarApp::OskarApp(QWidget* parent, const char* name)
: KMainWindow(parent,name)
{
   (void)statusBar();
    if ( !name )
	setName( "oskarbase" );
    setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, sizePolicy().hasHeightForWidth() ) );
    setMinimumSize( QSize( 640, 480 ) );
    setXMLFile("oskarui.rc");
    setupActions();
    createGUI();

    mView = new OskarView(this);
    setCentralWidget(mView);

}

OskarApp::~OskarApp()
{
}

void OskarApp::setupActions()
{
    // actions
// --- File ---
    fileOpenAction = KStdAction::open( this, SLOT( fileOpen() ), actionCollection(), "fileOpenAction");
    connect( fileOpenAction, SIGNAL( activated() ), this, SLOT( fileOpen() ) );

    fileOpenURLAction = new KAction( i18n("Open &URL..."), "www", 0, actionCollection(), "fileOpenURLAction" );
    connect( fileOpenURLAction, SIGNAL( activated() ), this, SLOT( fileOpenURL() ) ); // KDE 4 icon name: document-open-remote

    fileOpenRecentAction = KStdAction::openRecent( this, SLOT( fileOpenRecent() ), actionCollection(), "fileOpenRecentAction");
//    connect( fileOpenRecentAction, SIGNAL( activated() ), this, SLOT( fileOpenRecent() ) );

//    fileClear_HistoryAction = new KAction( i18n("Clear &History"), "eraser", 0, this, SLOT(()), actionCollection(), "fileClear_HistoryAction" ); // KDE 4 icon name: edit-clear-history

    filePlayDiscAction = new KAction( i18n("Play &Disc..."), "cd", 0, actionCollection(), "filePlayDiscAction" );
    connect( filePlayDiscAction, SIGNAL( activated() ), this, SLOT( filePlayDisc() ) ); // KDE 4 icon name: media-optical

    fileWatchTVAction = new KAction( i18n("&Watch TV..."), "tv", 0, actionCollection(), "fileWatchTVAction" );
    connect( fileWatchTVAction, SIGNAL( activated() ), this, SLOT( fileWatchTV() ) ); // KDE 4 icon name: video-television

//    fileOpenCaptureDeviceAction = new KAction( i18n("Open &Capture Device..."), "webcamreceive", 0, this, SLOT( fileOpenCaptureDevice() ), actionCollection(), "fileOpen_Capture_DeviceAction" );
//    connect( fileOpenCaptureDeviceAction, SIGNAL( activated() ), this, SLOT( fileOpen_Capture_Device() ) );

//    fileOpenPipeAction = new KAction( i18n("Open &Pipe..."), "pipe", 0, this, SLOT( fileOpenPipe() ), actionCollection(), "fileOpenPipeAction" );
//    connect( fileOpenPipeAction, SIGNAL( activated() ), this, SLOT( fileOpenPipe() ) );

    fileSaveAsAction = new KAction( i18n("Save &As..."), "filesaveas", 0, actionCollection(), "fileSaveAsAction" );
    connect( fileSaveAsAction, SIGNAL( activated() ), this, SLOT( fileSaveAs() ) ); // KDE 4 icon name: document-save-as

    fileInfoAction = new KAction( i18n("&Info..."), "info", CTRL+Key_I, actionCollection(), "fileInfoAction" );
    connect( fileInfoAction, SIGNAL( activated() ), this, SLOT( fileInfo() ) ); // KDE 4 icon name: document-preview

    fileExitAction = KStdAction::quit( this, SLOT(close()), actionCollection(), "fileExitAction");
//    connect( fileExitAction, SIGNAL( activated() ), this, SLOT( fileExit() ) );

// --- Playlist ---
    playlistNewAction = new KAction( i18n("&New"), "filenew", 0, actionCollection(), "playlistNewAction" );
    connect( playlistNewAction, SIGNAL( activated() ), this, SLOT( playlistNew() ) ); // KDE 4 icon name: document-new

    playlistOpenAction = new KAction( i18n("&Open..."), "fileopen", 0, actionCollection(), "playlistOpenAction" );
    connect( playlistOpenAction, SIGNAL( activated() ), this, SLOT( playlistOpen() ) ); // KDE 4 icon name: document-open

    playlistImportFileAction = new KAction( i18n("Import &File..."), "fileimport", 0, actionCollection(), "playlistImportFileAction" ); // KDE 4 icon name: document-import
    connect( playlistImportFileAction, SIGNAL( activated() ), this, SLOT( playlistImportFile() ) );

    playlistSaveAction = new KAction( i18n("Save"), "filesave", 0, actionCollection(), "playlistSaveAction" );
    connect( playlistSaveAction, SIGNAL( activated() ), this, SLOT( playlistSave() ) ); // KDE 4 icon name: document-save

    playlistSaveAsAction = new KAction( i18n("Save &As..."), "filesaveas", 0, actionCollection(), "playlistSaveAsAction" ); // KDE 4 icon name: document-save-as
    connect( playlistSaveAsAction, SIGNAL( activated() ), this, SLOT( playlistSaveAs() ) );

    playlistReloadAction = new KAction( i18n("Reload"), "reload", 0, actionCollection(), "playlistReloadAction" );
    connect( playlistReloadAction, SIGNAL( activated() ), this, SLOT( playlistReload() ) ); // KDE 4 icon name: view-refresh

// --- View ---
    viewNewWindowAction = new KAction( i18n("&New Window"), "window_new", 0, actionCollection(), "viewNewWindowAction" );
    connect( viewNewWindowAction, SIGNAL( activated() ), this, SLOT( viewNewWindow() ) ); // KDE 4 icon name: window-new

    viewModeFullScreenAction = new KToggleAction( i18n("&FullScreen Mode"), "window_fullscreen", 0, actionCollection(), "viewModeFullScreenAction" ); // KDE 4 icon name: view-fullscreen
    viewModeFullScreenAction->setExclusiveGroup( "viewMode" );
    connect( viewModeFullScreenAction, SIGNAL( toggled(bool) ), this, SLOT( viewModeFullScreen(bool) ) );

    viewModeAdvancedAction = new KToggleAction( i18n("&Advanced Mode"), "view_left_right", 0, actionCollection(), "viewModeAdvancedAction" ); // KDE 4 icon name: view-split-left-right
    viewModeAdvancedAction->setExclusiveGroup( "viewMode" );
    viewModeAdvancedAction->setChecked( true );
    connect( viewModeAdvancedAction, SIGNAL( toggled(bool) ), this, SLOT( viewModeAdvanced(bool) ) );

    viewModeBasicAction = new KToggleAction( i18n("&Basic Mode"), "view_top_bottom", 0, actionCollection(), "viewModeBasicAction" ); // KDE 4 icon name: view-split-top-bottom
    viewModeBasicAction->setExclusiveGroup( "viewMode" );
    connect( viewModeBasicAction, SIGNAL( toggled(bool) ), this, SLOT( viewModeBasic(bool) ) );

    viewModeMinimalAction = new KToggleAction( i18n("&Minimal Mode"), "view_remove", 0, actionCollection(), "viewModeMinimalAction" ); // KDE 4 icon name: view-close
    viewModeMinimalAction->setExclusiveGroup( "viewMode" );
    connect( viewModeMinimalAction, SIGNAL( toggled(bool) ), this, SLOT( viewModeMinimal(bool) ) );

    viewResize025Action = new KAction( i18n("Resize to 25%"), "viewmag-", 0, actionCollection(), "viewResize025Action" );
    connect( viewResize025Action, SIGNAL( activated() ), this, SLOT( viewResize025() ) ); // KDE 4 icon name: zoom-out

    viewResize050Action = new KAction( i18n("Resize to 50%"), "viewmag-", 0, actionCollection(), "viewResize050Action" );
    connect( viewResize050Action, SIGNAL( activated() ), this, SLOT( viewResize050() ) ); // KDE 4 icon name: zoom-out

    viewResize100Action = new KAction( i18n("Resize to 100%"), "viewmagfit", 0, actionCollection(), "viewResize100Action" );
    connect( viewResize100Action, SIGNAL( activated() ), this, SLOT( viewResize100() ) );

    viewResize150Action = new KAction( i18n("Resize to 150%"), "viewmag+", 0, actionCollection(), "viewResize150Action" );
    connect( viewResize150Action, SIGNAL( activated() ), this, SLOT( viewResize150() ) ); // KDE 4 icon name: zoom-in

    viewResize200Action = new KAction( i18n("Resize to 200%"), "viewmag+", 0, actionCollection(), "viewResize200Action" );
    connect( viewResize200Action, SIGNAL( activated() ), this, SLOT( viewResize200() ) ); // KDE 4 icon name: zoom-in

    viewResize300Action = new KAction( i18n("Resize to 300%"), "viewmag+", 0, actionCollection(), "viewResize300Action" );
    connect( viewResize300Action, SIGNAL( activated() ), this, SLOT( viewResize300() ) ); // KDE 4 icon name: zoom-in

    viewResize400Action = new KAction( i18n("Resize to 400%"), "viewmag+", 0, actionCollection(), "viewResize400Action" );
    connect( viewResize400Action, SIGNAL( activated() ), this, SLOT( viewResize400() ) ); // KDE 4 icon name: zoom-in

    viewFitToWindowAction = new KToggleAction( i18n("&Fit To Window"), 0, 0, actionCollection(), "viewFitToWindowAction" );
    viewFitToWindowAction->setChecked( true );
    connect( viewFitToWindowAction, SIGNAL( toggled(bool) ), this, SLOT( viewFitToWindow(bool) ) );

    viewAspectRatio0Action = new KToggleAction( i18n("Default"), 0, 0, actionCollection(), "viewAspectRatio0Action" );
    viewAspectRatio0Action->setExclusiveGroup( "aspectRatio" );
    viewAspectRatio0Action->setChecked( "true" );
    connect( viewAspectRatio0Action, SIGNAL( activated() ), this, SLOT( viewAspectRatio0() ) );

    viewAspectRatio1Action = new KToggleAction( i18n("1:1"), 0, 0, actionCollection(), "viewAspectRatio1Action" );
    viewAspectRatio1Action->setExclusiveGroup( "aspectRatio" );
    connect( viewAspectRatio1Action, SIGNAL( activated() ), this, SLOT( viewAspectRatio1() ) );

    viewAspectRatio2Action = new KToggleAction( i18n("4:3"), 0, 0, actionCollection(), "viewAspectRatio2Action" );
    viewAspectRatio2Action->setExclusiveGroup( "aspectRatio" );
    connect( viewAspectRatio2Action, SIGNAL( activated() ), this, SLOT( viewAspectRatio2() ) );

    viewAspectRatio3Action = new KToggleAction( i18n("16:9"), 0, 0, actionCollection(), "viewAspectRatio3Action" );
    viewAspectRatio3Action->setExclusiveGroup( "aspectRatio" );
    connect( viewAspectRatio3Action, SIGNAL( activated() ), this, SLOT( viewAspectRatio3() ) );

    viewAspectRatio4Action = new KToggleAction( i18n("2.2:1"), 0, 0, actionCollection(), "viewAspectRatio4Action" );
    viewAspectRatio4Action->setExclusiveGroup( "aspectRatio" );
    connect( viewAspectRatio4Action, SIGNAL( activated() ), this, SLOT( viewAspectRatio4() ) );

    viewKeepAspectRatioAction = new KToggleAction( i18n("&Keep Aspect Ratio"), 0, 0, actionCollection(), "viewKeepAspectRatioAction" );
    viewKeepAspectRatioAction->setChecked( true );
    connect( viewKeepAspectRatioAction, SIGNAL( toggled(bool) ), this, SLOT( viewKeepAspectRatio(bool) ) );

// --- Bookmarks ---
    bookmarksAddBookmarkAction = KStdAction::addBookmark(this, SLOT( bookmarksAddBookmark() ), actionCollection(), "bookmarksAddBookmarkAction");
    connect( bookmarksAddBookmarkAction, SIGNAL( activated() ), this, SLOT( bookmarksAddBookmark() ) );

    bookmarksEditBookmarksAction = KStdAction::editBookmarks(this, SLOT( bookmarksEditBookmarks() ), actionCollection(), "bookmarksEditBookmarksAction");
    connect( bookmarksEditBookmarksAction, SIGNAL( activated() ), this, SLOT( bookmarksEditBookmarks() ) );

// --- Player ---
    playerPlayPauseAction = new KAction( i18n("Play"), "player_play", 0, actionCollection(), "playerPlayPauseAction" );
    connect( playerPlayPauseAction, SIGNAL( activated() ), this, SLOT( playerPlayPause() ) ); // KDE 4 icon name: media-playback-start

    playerStopAction = new KAction( i18n("Stop"), "player_stop", 0, actionCollection(), "playerStopAction" );
    connect( playerStopAction, SIGNAL( activated() ), this, SLOT( playerStop() ) ); // KDE 4 icon name: media-playback-stop

    playerPreviousAction = new KAction( i18n("Previous"), "player_start", 0, actionCollection(), "playerPreviousAction" );
    connect( playerPreviousAction, SIGNAL( activated() ), this, SLOT( playerPrevious() ) ); // KDE 4 icon name: media-skip-backward

    playerNextAction = new KAction( i18n("Next"), "player_end", 0, actionCollection(), "playerNextAction" );
    connect( playerNextAction, SIGNAL( activated() ), this, SLOT( playerNext() ) ); // KDE 4 icon name: media-skip-forward

    playerRecordAction = new KAction( i18n("Record"), "player_record", 0, actionCollection(), "playerRecordAction" );
    connect( playerRecordAction, SIGNAL( activated() ), this, SLOT( playerRecord() ) ); // KDE 4 icon name: media-record

//    playerIncrease_SpeedAction = new KAction( i18n("Slow Down/Rewind"), 0, 0, actionCollection(), "playerIncrease_SpeedAction" );

//    playerDecrease_SpeedAction = new KAction( i18n("Speed Up/Fast Forward"), 0, 0, actionCollection(), "playerDecrease_SpeedAction" );

    playerGo10SecBackAction = new KAction( i18n("Go 10sec Back"), "player_rew", 0, actionCollection(), "playerGo10SecBackAction" ); // KDE 4 icon name: media-seek-backward
    connect( playerGo10SecBackAction, SIGNAL( activated() ), this, SLOT( playerGo10SecBack() ) );

    playerGo10SecForthAction = new KAction( i18n("Go 10sec Forth"), "player_fwd", 0, actionCollection(), "playerGo10SecForthAction" ); // KDE 4 icon name: media-seek-forward
    connect( playerGo10SecForthAction, SIGNAL( activated() ), this, SLOT( playerGo10SecForth() ) );

    playerGoToPositionAction = new KAction( i18n("Go to position..."), "goto", 0, actionCollection(), "playerGoToPositionAction" ); // KDE 4 icon name: go-jump
    connect( playerGoToPositionAction, SIGNAL( activated() ), this, SLOT( playerGoToPosition() ) );

    playerRepeatModeDisableAction = new KToggleAction( i18n("Disable"), 0, 0, actionCollection(), "playerRepeatModeDisableAction" );
    playerRepeatModeDisableAction->setExclusiveGroup( "repeatMode" );
    playerRepeatModeDisableAction->setChecked( true );
    connect( playerRepeatModeDisableAction, SIGNAL( toggled(bool) ), this, SLOT( playerRepeatModeDisable(bool) ) );

    playerRepeatModeSingleAction = new KToggleAction( i18n("Single"), 0, 0, actionCollection(), "playerRepeatModeSingleAction" );
    playerRepeatModeSingleAction->setExclusiveGroup( "repeatMode" );
    connect( playerRepeatModeSingleAction, SIGNAL( toggled(bool) ), this, SLOT( playerRepeatModeSingle(bool) ) );

    playerRepeatModePlaylistAction = new KToggleAction( i18n("Playlist"), 0, 0, actionCollection(), "playerRepeatModePlaylistAction" );
    playerRepeatModePlaylistAction->setExclusiveGroup( "repeatMode" );
    connect( playerRepeatModePlaylistAction, SIGNAL( toggled(bool) ), this, SLOT( playerRepeatModePlaylist(bool) ) );

    playerShuffleAction = new KToggleAction( i18n("Shuffle Mode"), "roll", 0, actionCollection(), "playerShuffleAction" );
    connect( playerShuffleAction, SIGNAL( toggled(bool) ), this, SLOT( playerShuffle(bool) ) ); // KDE 4 icon name: media-playlist-shuffle

    playerAudioMuteAction = new KToggleAction( i18n("Mute"), "player_mute", 0, actionCollection(), "playerAudioMuteAction" ); // KDE 4 icon name: volume-mute
    connect( playerAudioMuteAction, SIGNAL( toggled(bool) ), this, SLOT( playerAudioMute(bool) ) );

// --- Settings ---
    settingsHideMenubarAction = KStdAction::showMenubar( this, 0, actionCollection(), "settingsHideMenubarAction");
    connect( settingsHideMenubarAction, SIGNAL( toggled(bool) ), this, SLOT( settingsHideMenubar(bool) ) );

    settingsHideStatusbarAction = KStdAction::showStatusbar( this, 0, actionCollection(), "settingsHideStatusbarAction");
    connect( settingsHideStatusbarAction, SIGNAL( toggled(bool) ), this, SLOT( settingsHideStatusbar(bool) ) );

//    settingsHideToolbarAction = KToggleToolBarAction( "Show %1" ,actionCollection(),"settingsHideToolbarAction");
//    connect( settingsHideToolbarAction, SIGNAL( toggled(bool) ), this, SLOT( settingsHideToolbar(bool) ) );
    this->setStandardToolBarMenuEnabled( true );

    settingsConfigureShortcutsAction = KStdAction::keyBindings( guiFactory(), SLOT( configureShortcuts() ), actionCollection(), "settingsConfigureShortcutsAction");

    settingsConfigureToolbarAction = KStdAction::configureToolbars( this, SLOT( configureToolbars() ), actionCollection(), "settingsConfigureToolbarAction");

    settingsShowEqualizerAction = new KToggleAction( i18n("Show Equalizer"), "artsfftscope", 0, actionCollection(), "settingsShowEqualizerAction" ); // KDE 4 icon name: view-media-equalizer
    connect( settingsShowEqualizerAction, SIGNAL( toggled(bool) ), this, SLOT( settingsShowEqualizer(bool) ) );

    settingsShowPictureControlsAction = new KToggleAction( i18n("Show Picture Controls"), "colorize", 0, actionCollection(), "settingsShowPictureControlsAction" );
    connect( settingsShowPictureControlsAction, SIGNAL( toggled(bool) ), this, SLOT( settingsShowPictureControls(bool) ) );

    settingsDeinterlaceVideoAction = new KToggleAction( i18n("&Deinterlace Video"), 0, 0, actionCollection(), "settingsDeinterlaceVideoAction" );
    connect( settingsDeinterlaceVideoAction, SIGNAL( toggled(bool) ), this, SLOT( settingsDeinterlaceVideo(bool) ) );

    settingsSwitchBackendXineAction = new KToggleAction( i18n("Xine"), 0, 0, actionCollection(), "settingsSwitchBackendXineAction" );
    settingsSwitchBackendXineAction->setExclusiveGroup( "switchBackend" );
    settingsSwitchBackendXineAction->setChecked( true );
    connect( settingsSwitchBackendXineAction, SIGNAL( toggled(bool) ), this, SLOT( settingsSwitchBackendXine(bool) ) );

    settingsSwitchBackendGstreamerAction = new KToggleAction( i18n("Gstreamer"), 0, 0, actionCollection(), "settingsSwitchBackendGstreamerAction" );
    settingsSwitchBackendGstreamerAction->setExclusiveGroup( "switchBackend" );
    connect( settingsSwitchBackendGstreamerAction, SIGNAL( toggled(bool) ), this, SLOT( settingsSwitchBackendGstreamer(bool) ) );

    settingsConfigureOskarAction = KStdAction::preferences( this, SLOT( settingsConfigureOskar() ), actionCollection(), "settingsConfigureOskarAction");
    connect( settingsConfigureOskarAction, SIGNAL( activated() ), this, SLOT( settingsConfigureOskar() ) );

// --- Help ---
    this->setHelpMenuEnabled( true );
}

void OskarApp::fileOpen()
{
  mView->mPlayerView->mTestButton->setText("Open File");
}

void OskarApp::fileOpenURL()
{
}

void OskarApp::fileOpenRecent()
{
}

void OskarApp::filePlayDisc()
{
  mView->mPlayerView->mTestButton->setText("Play Disc");
}

void OskarApp::fileWatchTV()
{
}

/* void OskarApp::fileOpenCaptureDevice()
{
} */

/* void OskarApp::fileOpenPipe()
{
} */

void OskarApp::fileSaveAs()
{
}

void OskarApp::fileInfo()
{
}

/* void OskarApp::fileExit()
{
    KApplication::exit( 0 );
} */

void OskarApp::playlistNew()
{
}

void OskarApp::playlistOpen()
{
}

void OskarApp::playlistImportFile()
{
}

void OskarApp::playlistSave()
{
}

void OskarApp::playlistSaveAs()
{
}

void OskarApp::playlistReload()
{
}

void OskarApp::viewNewWindow()
{
}

void OskarApp::viewModeFullScreen(bool toggled)
{
    if (toggled) {
        mView->mPlayerView->mTestButton->setText( "FullScreen" );
    }
}

void OskarApp::viewModeAdvanced(bool toggled)
{
    if (toggled) {
        mView->mPlayerView->mTestButton->setText( "Advanced Mode" );
    }
}

void OskarApp::viewModeBasic(bool toggled)
{
    if (toggled) {
        mView->mPlayerView->mTestButton->setText( "Basic Mode" );
    }
}

void OskarApp::viewModeMinimal(bool toggled)
{
    if (toggled) {
        mView->mPlayerView->mTestButton->setText( "Minimal Mode" );
    }
}

void OskarApp::viewResize025()
{
}

void OskarApp::viewResize050()
{
}

void OskarApp::viewResize100()
{
}

void OskarApp::viewResize150()
{
}

void OskarApp::viewResize200()
{
}

void OskarApp::viewResize300()
{
}

void OskarApp::viewResize400()
{
}

void OskarApp::viewFitToWindow(bool)
{
}

void OskarApp::viewAspectRatio0()
{
}

void OskarApp::viewAspectRatio1()
{
}

void OskarApp::viewAspectRatio2()
{
}

void OskarApp::viewAspectRatio3()
{
}

void OskarApp::viewAspectRatio4()
{
}

void OskarApp::viewKeepAspectRatio(bool)
{
}

void OskarApp::bookmarksAddBookmark()
{
}

void OskarApp::bookmarksEditBookmarks()
{
}

void OskarApp::playerPlayPause()
{
}

void OskarApp::playerStop()
{
}

void OskarApp::playerPrevious()
{
}

void OskarApp::playerNext()
{
}
void OskarApp::playerRecord()
{
}

void OskarApp::playerGo10SecBack()
{
}

void OskarApp::playerGo10SecForth()
{
}

void OskarApp::playerGoToPosition()
{
}

void OskarApp::playerRepeatModeDisable(bool)
{
}

void OskarApp::playerRepeatModeSingle(bool)
{
}

void OskarApp::playerRepeatModePlaylist(bool)
{
}

void OskarApp::playerShuffle(bool)
{
}

void OskarApp::playerAudioMute(bool)
{
}

void OskarApp::settingsHideStatusbar(bool)
{
}

void OskarApp::settingsHideMenubar(bool)
{
}

/* void OskarApp::settingsHideToolbar(bool)
{
} */

void OskarApp::settingsShowEqualizer(bool)
{
}

void OskarApp::settingsShowPictureControls(bool)
{
}

void OskarApp::settingsDeinterlaceVideo(bool)
{
}

void OskarApp::settingsSwitchBackendGstreamer(bool)
{
}

void OskarApp::settingsSwitchBackendXine(bool)
{
}

void OskarApp::settingsConfigureOskar()
{
}

#include "oskarapp.moc"

