/*************************************************************************** * Copyright (C) 2004 by Petri Damsten * * petri.damsten@iki.fi * * * * 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. * ***************************************************************************/ #include "karamba.h" #include "karambainterface.h" #include #include "tqwidgetlist.h" #include "themesdlg.h" KarambaIface::KarambaIface(): DCOPObject("KarambaIface") { } KarambaIface::~KarambaIface() { } karamba* KarambaIface::getKaramba(TQString name) { TQWidgetList *list = TQApplication::tqallWidgets(); TQWidgetListIt it(*list); // iterate over the widgets TQWidget* w; karamba* result = 0; while ( (w=it.current()) != 0 ) // for each widget... { ++it; if (TQString(w->name()).startsWith("karamba")) { karamba* k = (karamba*) w; //if(k->prettyName == name) if(k->theme().name() == name) { result = k; break; } } } delete list; return result; } ThemesDlg* KarambaIface::getThemeWnd() { TQWidgetList *list = TQApplication::tqallWidgets(); TQWidgetListIt it( *list ); // iterate over the widgets TQWidget* w; ThemesDlg* result = 0; while ( (w=it.current()) != 0 ) // for each widget... { ++it; if (TQString(w->name()) == "ThemesLayout") { result = (ThemesDlg*) w; break; } } delete list; // delete the list, not the widgets return result; } void KarambaIface::openTheme(TQString filename) { TQFileInfo file(filename); if(file.exists()) { (new karamba(filename, TQString()))->show(); } } void KarambaIface::openNamedTheme(TQString filename, TQString name, bool is_sub_theme) { TQFileInfo file(filename); if(file.exists()) { (new karamba(filename, name, false, -1, is_sub_theme))->show(); } } void KarambaIface::closeTheme(TQString name) { kdDebug() << "KarambaIface::closeTheme: " << name << endl; karamba* k; while((k = getKaramba(name))) { k->writeConfigData(); k->close(true); } } int KarambaIface::themeAdded(TQString appId, TQString file) { ThemesDlg* tw = getThemeWnd(); if(tw) return tw->addTheme(appId, file); return -1; } void KarambaIface::themeNotify(TQString name, TQString text) { karamba* k = getKaramba(name); if(k) { k->themeNotify(name, text); } } void KarambaIface::setIncomingData(TQString name, TQString text) { karamba* k = getKaramba(name); if(k) { k->_setIncomingData(text); } } void KarambaIface::themeClosed(TQString appId, TQString file, int instance) { ThemesDlg* tw = getThemeWnd(); if(tw) tw->removeTheme(appId, file, instance); } bool KarambaIface::isMainKaramba() { if(getThemeWnd()) return true; return false; } void KarambaIface::quit() { karambaApp->quitSuperKaramba(); } void KarambaIface::hideSystemTray(bool hide) { karambaApp->hideSysTray(hide); } void KarambaIface::showThemeDialog() { karambaApp->showThemeDialog(); }