added event handlers to SimplePlaylistManagementWindow:

* when the title is edited (also to create a new playlist if necessary)
* when the playlist is changed from GLiveSupport::addToPlaylist(); a new
signal is created for this purpose in GLiveSupport
This commit is contained in:
fgerlits 2005-07-20 21:43:02 +00:00
parent 0a1622e3cd
commit 19dd690732
5 changed files with 115 additions and 16 deletions

View file

@ -22,7 +22,7 @@
Author : $Author: fgerlits $
Version : $Revision: 1.5 $
Version : $Revision: 1.6 $
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/EntryBin.h,v $
------------------------------------------------------------------------------*/
@ -65,7 +65,7 @@ using namespace LiveSupport::Core;
* A container, holding a Gtk::Entry as its only child.
*
* @author $Author: fgerlits $
* @version $Revision: 1.5 $
* @version $Revision: 1.6 $
*/
class EntryBin : public BlueBin
{
@ -115,6 +115,17 @@ class EntryBin : public BlueBin
return getEntry()->get_text();
}
/**
* Set the text of the entry.
*
* @return the get_text() string of the Gtk::Entry.
*/
void
set_text(const Glib::ustring & text) throw ()
{
getEntry()->set_text(text);
}
/**
* The signal proxy for pressing enter in the entry field.
*
@ -125,6 +136,17 @@ class EntryBin : public BlueBin
{
return getEntry()->signal_activate();
}
/**
* The signal proxy for the text having changed in the entry field.
*
* @return the signal_changed() proxy of the Gtk::Entry.
*/
Glib::SignalProxy0<void>
signal_changed(void) throw ()
{
return getEntry()->signal_changed();
}
};

View file

@ -22,7 +22,7 @@
Author : $Author: fgerlits $
Version : $Revision: 1.60 $
Version : $Revision: 1.61 $
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/GLiveSupport.cxx,v $
------------------------------------------------------------------------------*/
@ -695,6 +695,7 @@ GLiveSupport :: addToPlaylist(Ptr<const UniqueId>::Ref id)
}
masterPanel->updateSimplePlaylistMgmtWindow();
emitSignalEditedPlaylistModified();
}

View file

@ -22,7 +22,7 @@
Author : $Author: fgerlits $
Version : $Revision: 1.44 $
Version : $Revision: 1.45 $
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/GLiveSupport.h,v $
------------------------------------------------------------------------------*/
@ -102,7 +102,7 @@ class MasterPanelWindow;
* respective documentation.
*
* @author $Author: fgerlits $
* @version $Revision: 1.44 $
* @version $Revision: 1.45 $
* @see LocalizedObject#getBundle(const xmlpp::Element &)
* @see AuthenticationClientFactory
* @see StorageClientFactory
@ -272,6 +272,22 @@ class GLiveSupport : public LocalizedConfigurable,
virtual void
releaseCueAudio(void) throw (std::logic_error);
/**
* Emit the "edited playlist has been modified" signal.
*/
void
emitSignalEditedPlaylistModified(void) throw ()
{
signalEditedPlaylistModified().emit();
}
protected:
/**
* A signal object to notify people that the edited playlist changed.
*/
sigc::signal<void> signalEditedPlaylistModifiedObject;
public:
/**
@ -782,6 +798,17 @@ class GLiveSupport : public LocalizedConfigurable,
*/
Gtk::Image*
getStationLogoImage() throw ();
/**
* The signal raised when the edited playlist is modified.
*
* @return the signal object (a protected member of this class)
*/
sigc::signal<void>
signalEditedPlaylistModified(void) throw ()
{
return signalEditedPlaylistModifiedObject;
}
};
/* ================================================= external data structures */

View file

@ -22,7 +22,7 @@
Author : $Author: fgerlits $
Version : $Revision: 1.23 $
Version : $Revision: 1.24 $
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/SimplePlaylistManagementWindow.cxx,v $
------------------------------------------------------------------------------*/
@ -87,8 +87,10 @@ SimplePlaylistManagementWindow :: SimplePlaylistManagementWindow (
std::exit(1);
}
EntryBin * nameEntryBin = Gtk::manage(wf->createEntryBin());
nameEntry = nameEntryBin->getEntry();
nameEntry = Gtk::manage(wf->createEntryBin());
nameEntry->signal_changed().connect(sigc::mem_fun(
*this, &SimplePlaylistManagementWindow::onTitleEdited ));
entriesScrolledWindow = Gtk::manage(new Gtk::ScrolledWindow());
entriesModel = Gtk::ListStore::create(modelColumns);
entriesView = Gtk::manage(wf->createTreeView(entriesModel));
@ -154,7 +156,7 @@ SimplePlaylistManagementWindow :: SimplePlaylistManagementWindow (
Gtk::Alignment * nameEntryAlignment = Gtk::manage(new Gtk::Alignment(
Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER,
0.7)); // take up 70% of available room
nameEntryAlignment->add(*nameEntryBin);
nameEntryAlignment->add(*nameEntry);
nameBox->pack_start(*nameEntryAlignment, Gtk::PACK_EXPAND_WIDGET, 5);
mainBox->pack_start(*nameBox, Gtk::PACK_SHRINK, 5);
@ -204,6 +206,9 @@ SimplePlaylistManagementWindow :: SimplePlaylistManagementWindow (
DialogWindow::noButton |
DialogWindow::yesButton,
gLiveSupport->getBundle() ));
gLiveSupport->signalEditedPlaylistModified().connect(sigc::mem_fun(
*this, &SimplePlaylistManagementWindow::onPlaylistModified ));
}
@ -387,6 +392,27 @@ SimplePlaylistManagementWindow :: showContents(void) throw ()
}
/*------------------------------------------------------------------------------
* Signal handler for the fade info being edited.
*----------------------------------------------------------------------------*/
void
SimplePlaylistManagementWindow :: onTitleEdited(void) throw()
{
Ptr<Playlist>::Ref playlist = gLiveSupport->getEditedPlaylist();
if (!playlist) {
playlist = gLiveSupport->openPlaylistForEditing();
}
Ptr<Glib::ustring>::Ref title(new Glib::ustring(
nameEntry->get_text()));
if (*title != *playlist->getTitle()) {
playlist->setTitle(title);
isPlaylistModified = true;
}
showContents();
}
/*------------------------------------------------------------------------------
* Signal handler for the fade info being edited.
*----------------------------------------------------------------------------*/
@ -436,9 +462,6 @@ SimplePlaylistManagementWindow :: onFadeInfoEdited(
return; // should never happen
}
Ptr<Glib::ustring>::Ref title(new Glib::ustring(nameEntry->get_text()));
playlist->setTitle(title); // this is stupid; TODO: fix it
showContents();
}
@ -513,3 +536,13 @@ SimplePlaylistManagementWindow :: isLengthOkay(
return (totalFades <= *playlistElement->getPlayable()->getPlaylength());
}
/*------------------------------------------------------------------------------
* Signal handler for the playlist being modified outside the window.
*----------------------------------------------------------------------------*/
void
SimplePlaylistManagementWindow :: onPlaylistModified(void) throw()
{
isPlaylistModified = true;
}

View file

@ -22,7 +22,7 @@
Author : $Author: fgerlits $
Version : $Revision: 1.11 $
Version : $Revision: 1.12 $
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/SimplePlaylistManagementWindow.h,v $
------------------------------------------------------------------------------*/
@ -88,7 +88,7 @@ using namespace LiveSupport::Widgets;
* </code></pre>
*
* @author $Author: fgerlits $
* @version $Revision: 1.11 $
* @version $Revision: 1.12 $
*/
class SimplePlaylistManagementWindow : public WhiteWindow,
public LocalizedObject
@ -101,14 +101,30 @@ class SimplePlaylistManagementWindow : public WhiteWindow,
enum { fadeInColumnId,
fadeOutColumnId };
/**
* Signal handler for the title being edited.
*/
void
onTitleEdited(void) throw();
/**
* Signal handler for the fade info being edited.
*
* @path the path representing the row in the tree model
* @columnId the ID of the row which was passed to appendColumn()
* @newText the new fade value
*/
void
onFadeInfoEdited(const Glib::ustring & path,
int columnId,
const Glib::ustring & newText) throw();
/**
* Signal handler for the playlist being modified outside the window.
*/
void
onPlaylistModified(void) throw();
/**
* Set the fade in of a playlist element.
*/
@ -157,7 +173,7 @@ class SimplePlaylistManagementWindow : public WhiteWindow,
* Lists one playlist entry per row.
*
* @author $Author: fgerlits $
* @version $Revision: 1.11 $
* @version $Revision: 1.12 $
*/
class ModelColumns : public ZebraTreeModelColumnRecord
{
@ -225,7 +241,7 @@ class SimplePlaylistManagementWindow : public WhiteWindow,
/**
* The test input entry for the name of the playlist.
*/
Gtk::Entry * nameEntry;
EntryBin * nameEntry;
/**
* A scrolled window, so that the entry list can be scrolled.