00001 /*************************************************************************** 00002 * Copyright (C) 2005-2007 Stefan Schwarzer, Jens Schneider, * 00003 * Matthias Hardt, Guido Madaus * 00004 * * 00005 * Copyright (C) 2007-2008 BerLinux Solutions GbR * 00006 * Stefan Schwarzer & Guido Madaus * 00007 * * 00008 * Copyright (C) 2009-2013 BerLinux Solutions GmbH * 00009 * * 00010 * Authors: * 00011 * Stefan Schwarzer <stefan.schwarzer@diskohq.org>, * 00012 * Matthias Hardt <matthias.hardt@diskohq.org>, * 00013 * Jens Schneider <jens.schneider@diskohq.org>, * 00014 * Guido Madaus <guido.madaus@diskohq.org>, * 00015 * Patrick Helterhoff <patrick.helterhoff@diskohq.org>, * 00016 * René Bählkow <rene.baehlkow@diskohq.org> * 00017 * * 00018 * This library is free software; you can redistribute it and/or * 00019 * modify it under the terms of the GNU Lesser General Public * 00020 * License version 2.1 as published by the Free Software Foundation. * 00021 * * 00022 * This library is distributed in the hope that it will be useful, * 00023 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00024 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00025 * Lesser General Public License for more details. * 00026 * * 00027 * You should have received a copy of the GNU Lesser General Public * 00028 * License along with this library; if not, write to the * 00029 * Free Software Foundation, Inc., * 00030 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * 00031 **************************************************************************/ 00032 00033 #ifndef IMMSSWITCHER_H_ 00034 #define IMMSSWITCHER_H_ 00035 00036 #include "mmsgui/mmschildwindow.h" 00037 #include "mmsconfig/mmsplugindata.h" 00038 00039 class MMSPluginManager; 00040 class MMSInputManager; 00041 00042 class IMMSSwitcher { 00043 public: 00044 virtual ~IMMSSwitcher() {}; 00045 00046 virtual void show() = 0; 00047 virtual void hide() = 0; 00048 00049 virtual void setWindowManager(IMMSWindowManager *wm) = 0; 00050 virtual void setPluginManager(MMSPluginManager *pm) = 0; 00051 virtual void setInputManager(MMSInputManager *im) = 0; 00052 00053 virtual MMSChildWindow* loadPreviewDialog(string filename, MMSTheme *theme = NULL, int id=-1) = 0; 00054 virtual MMSChildWindow* loadInfoBarDialog(string filename, MMSTheme *theme = NULL) = 0; 00055 00056 virtual void setVolume(unsigned int volume, bool init = false) = 0; 00057 00058 virtual IMMSSwitcher *newSwitcher(MMSPluginData *plugindata) = 0; 00059 00060 virtual bool switchToPlugin() = 0; 00061 00062 /* go back to the previous plugin */ 00063 virtual bool revertToLastPlugin() = 0; 00064 00065 virtual bool leavePlugin(bool show_switcher) = 0; 00066 00067 /* refresh switchers main window */ 00068 virtual void refresh() = 0; 00069 /** 00070 * load a generic childwindow to be shown by the plugin 00071 * 00072 * @param application specific data 00073 * 00074 * @return application specific data 00075 */ 00076 virtual MMSChildWindow* loadChildWindow(string filename, MMSTheme *theme = NULL) = 0; 00077 00078 /** 00079 * Generic callback for plugin->switcher communication. 00080 * 00081 * @param application specific data 00082 * 00083 * @return application specific data 00084 */ 00085 virtual void* callback(void* data) = 0; 00086 00087 /* refresh switchers main window */ 00088 virtual MMSWidget *getMyButton() = 0; 00089 00090 00091 }; 00092 00093 #endif /*IMMSSWITCHER_H_*/