// marquis.cpp // // Copyright (C) 2000 Neil Stevens // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // THE AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN // AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // Except as contained in this notice, the name(s) of the author(s) shall not be // used in advertising or otherwise to promote the sale, use or other dealings // in this Software without prior written authorization from the author(s). #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "marquis.h" #include #include #include static int getPlayStatus( Player *player ) { if ( player->isPlaying() ) return 1; if ( player->isPaused() ) return 2; return 0; } static void setPlayStatus( Player *player, int status ) { switch( status ) { default: case 0: player->stop(); break; case 1: player->play(); break; case 2: if ( !player->isPaused() ) { player->play(); player->playpause(); } break; } } Marquis::Marquis() : TDEMainWindow(0, "Marquis") , SessionManagement() { hide(); kdDebug(66666) << k_funcinfo << "number of members == " << memberList->count() << endl; // for testing: uncomment this and use // dcop `dcop | grep noatun` Marquis activateAction dynamicRestore // and dynamicSave accordingly. // (void) new TDEAction("Restore", 0, this, TQ_SLOT( dynamicRestore() ), actionCollection(), "dynamicRestore" ); // (void) new TDEAction("Save", 0, this, TQ_SLOT( dynamicSave() ), actionCollection(), "dynamicSave" ); connect( napp, TQ_SIGNAL( saveYourself() ), TQ_SLOT( dynamicSave() )); } Marquis::~Marquis() { } void Marquis::restore(void) { kdDebug(66666) << k_funcinfo << endl; dynamicRestore(); } // unload every window, and save the config as TQStringList of those loaded void Marquis::saveSessionConfig(TDEConfig *c) { kdDebug(66666) << k_funcinfo << endl; Player *player = napp->player(); c->writeEntry("Volume", player->volume()); c->writeEntry("Loop Style", player->loopStyle()); if ( napp->playlist() ) c->writeEntry("Playlist Visible", napp->playlist()->listVisible()); if ( !player->current().isNull() ) { KURL songURL = player->current().url(); songURL.setPass( TQString() ); // don't save passwords c->writePathEntry("Current Song", songURL.url()); } else c->writePathEntry("Current Song", TQString()); c->writeEntry("Current Position", player->getTime()); c->writeEntry("PlayStatus", getPlayStatus( player )); // borrowed from Plugin config dialog TQStringList specList; TQValueList loaded = napp->libraryLoader()->loaded(); for( TQValueList::Iterator i = loaded.begin(); i != loaded.end(); ++i) { if(!specList.contains((*i).specfile) && napp->libraryLoader()->isLoaded((*i).specfile) && (*i).specfile != "marquis.plugin") { specList += (*i).specfile; napp->libraryLoader()->remove((*i).specfile, false); } } c->writeEntry("Loaded Plugins", specList); } // get the list of loaded plugins from the config, and load them void Marquis::readSessionConfig(TDEConfig *c) { Player *player = napp->player(); c->setGroup(TQString()); // First set volume, then load modules, some module could start // playback and that would be with 100% volume! player->setVolume( c->readNumEntry("Volume", 100) ); //player->setVolume( 0 ); player->loop( c->readNumEntry("Loop Style", (int) Player::None) ); TQStringList list = c->readListEntry("Loaded Plugins"); /* kdDebug(66666) << "Marquis::readSessionConfig()" << endl; for(TQStringList::ConstIterator i=list.begin(); i!=list.end(); ++i) kdDebug(66666) << *i << endl; kdDebug(66666) << "Marquis::readSessionConfig() there we go" << endl; */ napp->libraryLoader()->loadAll(list); if (!napp->playlist()) { KMessageBox::error(0,i18n("No playlist plugin was found. " \ "Please make sure that Noatun was installed correctly.")); napp->quit(); return; } if ( c->readBoolEntry( "Playlist Visible", false )) napp->playlist()->showList(); napp->player()->engine()->setInitialized(); // TODO: restore the playback state (also save it ;) } void Marquis::dynamicSave() { TDEConfig config( "marquisrc" ); saveSessionConfig( &config ); } void Marquis::dynamicRestore() { TDEConfig config( "marquisrc" ); readSessionConfig( &config ); } #include "marquis.moc"