fixing #1930
This commit is contained in:
parent
b286b9048d
commit
a94d747628
7 changed files with 340 additions and 233 deletions
|
@ -264,7 +264,7 @@ class Button : public Gtk::Button
|
||||||
* @param child the widget that should be displayed inside the button.
|
* @param child the widget that should be displayed inside the button.
|
||||||
* @param buttonImages the images of the button
|
* @param buttonImages the images of the button
|
||||||
*/
|
*/
|
||||||
Button(Gtk::Widget * child,
|
Button(Gtk::Widget & child,
|
||||||
Ptr<ButtonImages>::Ref buttonImages) throw ();
|
Ptr<ButtonImages>::Ref buttonImages) throw ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -228,7 +228,22 @@ class WidgetFactory :
|
||||||
std::logic_error);
|
std::logic_error);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create and return a button.
|
* Create and return a generic button.
|
||||||
|
* It is the reponsibility of the caller to dispose of the created
|
||||||
|
* object properly.
|
||||||
|
*
|
||||||
|
* @param label the label shown inside the button.
|
||||||
|
* @param type the type of the button to create
|
||||||
|
* @return a button with the specified label.
|
||||||
|
*/
|
||||||
|
Button *
|
||||||
|
createButton(
|
||||||
|
Gtk::Widget & label,
|
||||||
|
WidgetConstants::ButtonType type = WidgetConstants::pushButton)
|
||||||
|
throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create and return a button with a text label.
|
||||||
* It is the reponsibility of the caller to dispose of the created
|
* It is the reponsibility of the caller to dispose of the created
|
||||||
* object properly.
|
* object properly.
|
||||||
*
|
*
|
||||||
|
|
|
@ -78,7 +78,7 @@ Button :: Button(const Glib::ustring & label,
|
||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
Button :: Button(Gtk::Widget * child,
|
Button :: Button(Gtk::Widget & child,
|
||||||
Ptr<ButtonImages>::Ref buttonImages)
|
Ptr<ButtonImages>::Ref buttonImages)
|
||||||
throw ()
|
throw ()
|
||||||
: useSelected(false),
|
: useSelected(false),
|
||||||
|
@ -88,7 +88,7 @@ Button :: Button(Gtk::Widget * child,
|
||||||
|
|
||||||
state = passiveState;
|
state = passiveState;
|
||||||
|
|
||||||
this->child = Gtk::manage(child);
|
this->child = &child;
|
||||||
this->child->set_parent(*this);
|
this->child->set_parent(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -401,7 +401,39 @@ WidgetFactory :: loadImage(const std::string imageName)
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
* Create a button
|
* Create a generic button.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
Button *
|
||||||
|
WidgetFactory :: createButton(Gtk::Widget & label,
|
||||||
|
WidgetConstants::ButtonType type) throw ()
|
||||||
|
{
|
||||||
|
Button * button = 0;
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case WidgetConstants::pushButton:
|
||||||
|
button = new Button(label, buttonImages);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WidgetConstants::radioButton:
|
||||||
|
button = new Button(label, buttonImages);
|
||||||
|
button->setUseSelected(true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WidgetConstants::tabButton:
|
||||||
|
button = new Button(label, tabButtonImages);
|
||||||
|
button->setUseSelected(true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
* Create a text button.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
Button *
|
Button *
|
||||||
WidgetFactory :: createButton(const Glib::ustring & label,
|
WidgetFactory :: createButton(const Glib::ustring & label,
|
||||||
|
|
|
@ -74,16 +74,6 @@ const std::string searchWhereRemoteKey = "searchWhereRemote";
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
const int searchResultsSize = 10;
|
const int searchResultsSize = 10;
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
|
||||||
* The label for the Backward button.
|
|
||||||
*----------------------------------------------------------------------------*/
|
|
||||||
const Glib::ustring backwardButtonText = "⇧";
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
|
||||||
* The label for the Forward button.
|
|
||||||
*----------------------------------------------------------------------------*/
|
|
||||||
const Glib::ustring forwardButtonText = "⇩";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* =============================================== local function prototypes */
|
/* =============================================== local function prototypes */
|
||||||
|
@ -383,21 +373,39 @@ SearchWindow :: constructSearchResultsView(void) throw ()
|
||||||
resultsWindow->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
|
resultsWindow->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
|
||||||
resultsWindow->add(*searchResultsTreeView);
|
resultsWindow->add(*searchResultsTreeView);
|
||||||
|
|
||||||
// create the page backward and forward buttons
|
// create the paging toolbar
|
||||||
backwardButton = Gtk::manage(wf->createButton(backwardButtonText));
|
try {
|
||||||
forwardButton = Gtk::manage(wf->createButton(forwardButtonText));
|
backwardButton = Gtk::manage(wf->createButton(
|
||||||
|
*getResourceUstring("backwardButtonLabel")));
|
||||||
|
forwardButton = Gtk::manage(wf->createButton(
|
||||||
|
*getResourceUstring("forwardButtonLabel")));
|
||||||
|
} catch (std::invalid_argument &e) {
|
||||||
|
std::cerr << e.what() << std::endl;
|
||||||
|
std::exit(1);
|
||||||
|
}
|
||||||
backwardButton->signal_clicked().connect(sigc::mem_fun(*this,
|
backwardButton->signal_clicked().connect(sigc::mem_fun(*this,
|
||||||
&SearchWindow::onBackwardButtonClicked));
|
&SearchWindow::onBackwardButtonClicked));
|
||||||
forwardButton->signal_clicked().connect(sigc::mem_fun(*this,
|
forwardButton->signal_clicked().connect(sigc::mem_fun(*this,
|
||||||
&SearchWindow::onForwardButtonClicked));
|
&SearchWindow::onForwardButtonClicked));
|
||||||
updateBackwardAndForwardButtons();
|
|
||||||
|
Gtk::Box * pagingButtonBox = Gtk::manage(new Gtk::HButtonBox(
|
||||||
|
Gtk::BUTTONBOX_DEFAULT_STYLE, 5));
|
||||||
|
pagingButtonBox->add(*backwardButton);
|
||||||
|
pagingButtonBox->add(*forwardButton);
|
||||||
|
|
||||||
|
searchResultsCountLabel = Gtk::manage(new Gtk::Label());
|
||||||
|
|
||||||
|
Gtk::Box * pagingToolbar = Gtk::manage(new Gtk::HBox);
|
||||||
|
pagingToolbar->pack_start(*searchResultsCountLabel,
|
||||||
|
Gtk::PACK_EXPAND_WIDGET, 5);
|
||||||
|
pagingToolbar->pack_start(*pagingButtonBox, Gtk::PACK_SHRINK, 5);
|
||||||
|
|
||||||
|
updatePagingToolbar();
|
||||||
|
|
||||||
// pack everything in a box
|
// pack everything in a box
|
||||||
Gtk::Box * view = Gtk::manage(new Gtk::VBox);
|
Gtk::Box * view = Gtk::manage(new Gtk::VBox);
|
||||||
view->pack_start(*backwardButton, Gtk::PACK_SHRINK, 2);
|
view->pack_start(*pagingToolbar, Gtk::PACK_SHRINK, 5);
|
||||||
view->pack_start(*resultsWindow, Gtk::PACK_EXPAND_WIDGET, 0);
|
view->pack_start(*resultsWindow, Gtk::PACK_EXPAND_WIDGET, 0);
|
||||||
view->pack_start(*forwardButton, Gtk::PACK_SHRINK, 2);
|
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
@ -539,7 +547,7 @@ SearchWindow :: displaySearchResults(
|
||||||
{
|
{
|
||||||
treeModel->clear();
|
treeModel->clear();
|
||||||
searchResultsTreeView->set_model(treeModel);
|
searchResultsTreeView->set_model(treeModel);
|
||||||
updateBackwardAndForwardButtons();
|
updatePagingToolbar();
|
||||||
|
|
||||||
Ptr<WidgetFactory>::Ref widgetFactory = WidgetFactory::getInstance();
|
Ptr<WidgetFactory>::Ref widgetFactory = WidgetFactory::getInstance();
|
||||||
|
|
||||||
|
@ -1088,7 +1096,7 @@ SearchWindow :: onSearchWhereChanged(void) throw ()
|
||||||
searchResultsTreeView->set_model(remoteSearchResults);
|
searchResultsTreeView->set_model(remoteSearchResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateBackwardAndForwardButtons();
|
updatePagingToolbar();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1264,18 +1272,48 @@ SearchWindow :: onForwardButtonClicked(void) throw ()
|
||||||
* Enable or disable the Backward and Forward buttons.
|
* Enable or disable the Backward and Forward buttons.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
SearchWindow :: updateBackwardAndForwardButtons(void) throw ()
|
SearchWindow :: updatePagingToolbar(void) throw ()
|
||||||
{
|
{
|
||||||
Ptr<SearchCriteria>::Ref criteria = getSearchCriteria();
|
Ptr<SearchCriteria>::Ref criteria = getSearchCriteria();
|
||||||
|
|
||||||
if (criteria) {
|
if (criteria) {
|
||||||
int offset = criteria->getOffset();
|
int offset = criteria->getOffset();
|
||||||
int count = getSearchResultsCount();
|
int count = getSearchResultsCount();
|
||||||
|
int lastNumber = std::min(offset + getSearchResultsSize(), count);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (count > 0) {
|
||||||
|
searchResultsCountLabel->set_text(*formatMessage(
|
||||||
|
"searchResultsCountLabel",
|
||||||
|
itoa(offset + 1),
|
||||||
|
itoa(lastNumber),
|
||||||
|
itoa(count) ));
|
||||||
|
} else {
|
||||||
|
searchResultsCountLabel->set_text("");
|
||||||
|
}
|
||||||
|
} catch (std::invalid_argument &e) {
|
||||||
|
std::cerr << e.what() << std::endl;
|
||||||
|
std::exit(1);
|
||||||
|
}
|
||||||
backwardButton->setDisabled(offset == 0);
|
backwardButton->setDisabled(offset == 0);
|
||||||
forwardButton->setDisabled(offset + getSearchResultsSize() >= count);
|
forwardButton->setDisabled(offset + getSearchResultsSize() >= count);
|
||||||
} else {
|
} else {
|
||||||
|
searchResultsCountLabel->set_text("");
|
||||||
backwardButton->setDisabled(true);
|
backwardButton->setDisabled(true);
|
||||||
forwardButton->setDisabled(true);
|
forwardButton->setDisabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
* Convert an integer to a string.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
Glib::ustring
|
||||||
|
SearchWindow :: itoa(int number) throw ()
|
||||||
|
{
|
||||||
|
std::ostringstream stream;
|
||||||
|
stream << number;
|
||||||
|
Glib::ustring string = stream.str();
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -149,6 +149,51 @@ class SearchWindow : public GuiWindow
|
||||||
*/
|
*/
|
||||||
Ptr<ExportPlaylistWindow>::Ref exportPlaylistWindow;
|
Ptr<ExportPlaylistWindow>::Ref exportPlaylistWindow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The tree model, as a GTK reference, for the local search results.
|
||||||
|
*/
|
||||||
|
Glib::RefPtr<Gtk::ListStore> localSearchResults;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The tree model, as a GTK reference, for the remote search results.
|
||||||
|
*/
|
||||||
|
Glib::RefPtr<Gtk::ListStore> remoteSearchResults;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The tree view showing the search results.
|
||||||
|
*/
|
||||||
|
ZebraTreeView * searchResultsTreeView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The label showing the number of search results.
|
||||||
|
*/
|
||||||
|
Gtk::Label * searchResultsCountLabel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The notebook for the various tabs in the window.
|
||||||
|
*/
|
||||||
|
ScrolledNotebook * searchInput;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The transport token used when a remote search is pending.
|
||||||
|
*/
|
||||||
|
Ptr<const Glib::ustring>::Ref remoteSearchToken;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The pop-up context menu for local audio clips.
|
||||||
|
*/
|
||||||
|
Gtk::Menu * audioClipContextMenu;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The pop-up context menu for local playlists.
|
||||||
|
*/
|
||||||
|
Gtk::Menu * playlistContextMenu;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The pop-up context menu for remote audio clips and playlists.
|
||||||
|
*/
|
||||||
|
Gtk::Menu * remoteContextMenu;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct the "search where" box.
|
* Construct the "search where" box.
|
||||||
* This contains a combo box, where the user can choose between
|
* This contains a combo box, where the user can choose between
|
||||||
|
@ -230,51 +275,6 @@ class SearchWindow : public GuiWindow
|
||||||
Gtk::Menu *
|
Gtk::Menu *
|
||||||
constructRemoteContextMenu(void) throw ();
|
constructRemoteContextMenu(void) throw ();
|
||||||
|
|
||||||
/**
|
|
||||||
* Event handler for the simple Search button getting clicked.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onSimpleSearch(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Event handler for the advanced Search button getting clicked.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onAdvancedSearch(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Event handler for changed selection in the Browse view.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onBrowse(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Do the searching (first set of results).
|
|
||||||
* Sets the offset to 0, and calls onSearch().
|
|
||||||
*
|
|
||||||
* @param criteria the search criteria.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onInitialSearch(Ptr<SearchCriteria>::Ref criteria) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Do the searching (after paging backward or forward).
|
|
||||||
* Sets the offset to the given value, and calls onSearch().
|
|
||||||
*
|
|
||||||
* @param offset the new offset to use for this search.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onContinuedSearch(int offset) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Do the searching.
|
|
||||||
* Calls either localSearch() or remoteSearch().
|
|
||||||
*
|
|
||||||
* @param criteria the search criteria.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onSearch(Ptr<SearchCriteria>::Ref criteria) throw ();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check the status of the "search where" input box.
|
* Check the status of the "search where" input box.
|
||||||
*/
|
*/
|
||||||
|
@ -359,103 +359,65 @@ class SearchWindow : public GuiWindow
|
||||||
throw ();
|
throw ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable or disable the Backward and Forward buttons.
|
* Update the paging portion of the search results view.
|
||||||
|
* Prints the number of results, and enables or disables
|
||||||
|
* the Backward and Forward buttons.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
updateBackwardAndForwardButtons(void) throw ();
|
updatePagingToolbar(void) throw ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Signal handler for the mouse clicked on one of the entries.
|
* Display a (usually error) message in the search results tree view.
|
||||||
*
|
*
|
||||||
* @param event the button event received
|
* @param messageKey the localization key for the message.
|
||||||
|
* @param treeModel the tree model to display the message in.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
onEntryClicked(GdkEventButton * event) throw ();
|
displayMessage(const Glib::ustring & messageKey,
|
||||||
|
Glib::RefPtr<Gtk::ListStore> treeModel)
|
||||||
|
throw ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Signal handler for the user double-clicking, or pressing Enter
|
* Display an error message which occurred during a search.
|
||||||
* on one of the entries.
|
|
||||||
*
|
*
|
||||||
* @param event the button event recieved
|
* @param error the error which occurred.
|
||||||
|
* @param treeModel the tree model to display the message in.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
onDoubleClick(const Gtk::TreeModel::Path & path,
|
displayError(const XmlRpcException & error,
|
||||||
const Gtk::TreeViewColumn * column)
|
Glib::RefPtr<Gtk::ListStore> treeModel)
|
||||||
|
throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display an error message which occurred during a local search.
|
||||||
|
*
|
||||||
|
* @param error the error which occurred.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
displayLocalSearchError(const XmlRpcException & error)
|
||||||
|
throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display an error message which occurred during a remote search.
|
||||||
|
*
|
||||||
|
* @param error the error which occurred.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
displayRemoteSearchError(const XmlRpcException & error)
|
||||||
throw ();
|
throw ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a playable to the scratchpad.
|
* Convert an integer to a string.
|
||||||
*/
|
|
||||||
void
|
|
||||||
onAddToScratchpad(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Signal handler for the "add to playlist" menu item selected from
|
|
||||||
* the entry context menu.
|
|
||||||
*/
|
|
||||||
virtual void
|
|
||||||
onAddToPlaylist(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a playable to the live mode.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onAddToLiveMode(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Signal handler for the "edit playlist" menu item selected from
|
|
||||||
* the entry context menu.
|
|
||||||
*/
|
|
||||||
virtual void
|
|
||||||
onEditPlaylist(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Signal handler for the "schedule playlist" menu item selected
|
|
||||||
* from the entry context menu.
|
|
||||||
*/
|
|
||||||
virtual void
|
|
||||||
onSchedulePlaylist(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Signal handler for the "export playlist" menu item selected from
|
|
||||||
* the entry context menu.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onExportPlaylist(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Signal handler for "upload to hub" in the context menu.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onUploadToHub(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Signal handler for "download from hub" in the context menu.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onDownloadFromHub(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Event handler for a click on the Backward button.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onBackwardButtonClicked(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Event handler for a click on the Forward button.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
onForwardButtonClicked(void) throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Event handler called when the the window gets hidden.
|
|
||||||
*
|
*
|
||||||
* This overrides GuiWindow::on_hide(), and closes the Export Playlist
|
* @param number the number to be converted.
|
||||||
* window, if it is still open.
|
* @return the string value of the number (in base 10).
|
||||||
*/
|
*/
|
||||||
virtual void
|
static Glib::ustring
|
||||||
on_hide(void) throw ();
|
itoa(int number) throw ();
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The columns model needed by Gtk::TreeView.
|
* The columns model needed by Gtk::TreeView.
|
||||||
* Lists one clip per row.
|
* Lists one clip per row.
|
||||||
|
@ -510,86 +472,6 @@ class SearchWindow : public GuiWindow
|
||||||
*/
|
*/
|
||||||
ModelColumns modelColumns;
|
ModelColumns modelColumns;
|
||||||
|
|
||||||
/**
|
|
||||||
* The tree model, as a GTK reference, for the local search results.
|
|
||||||
*/
|
|
||||||
Glib::RefPtr<Gtk::ListStore> localSearchResults;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The tree model, as a GTK reference, for the remote search results.
|
|
||||||
*/
|
|
||||||
Glib::RefPtr<Gtk::ListStore> remoteSearchResults;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The tree view showing the search results.
|
|
||||||
*/
|
|
||||||
ZebraTreeView * searchResultsTreeView;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The notebook for the various tabs in the window.
|
|
||||||
*/
|
|
||||||
ScrolledNotebook * searchInput;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The transport token used when a remote search is pending.
|
|
||||||
*/
|
|
||||||
Ptr<const Glib::ustring>::Ref remoteSearchToken;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The pop-up context menu for local audio clips.
|
|
||||||
*/
|
|
||||||
Gtk::Menu * audioClipContextMenu;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The pop-up context menu for local playlists.
|
|
||||||
*/
|
|
||||||
Gtk::Menu * playlistContextMenu;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The pop-up context menu for remote audio clips and playlists.
|
|
||||||
*/
|
|
||||||
Gtk::Menu * remoteContextMenu;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display a (usually error) message in the search results tree view.
|
|
||||||
*
|
|
||||||
* @param messageKey the localization key for the message.
|
|
||||||
* @param treeModel the tree model to display the message in.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
displayMessage(const Glib::ustring & messageKey,
|
|
||||||
Glib::RefPtr<Gtk::ListStore> treeModel)
|
|
||||||
throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display an error message which occurred during a search.
|
|
||||||
*
|
|
||||||
* @param error the error which occurred.
|
|
||||||
* @param treeModel the tree model to display the message in.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
displayError(const XmlRpcException & error,
|
|
||||||
Glib::RefPtr<Gtk::ListStore> treeModel)
|
|
||||||
throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display an error message which occurred during a local search.
|
|
||||||
*
|
|
||||||
* @param error the error which occurred.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
displayLocalSearchError(const XmlRpcException & error)
|
|
||||||
throw ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display an error message which occurred during a remote search.
|
|
||||||
*
|
|
||||||
* @param error the error which occurred.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
displayRemoteSearchError(const XmlRpcException & error)
|
|
||||||
throw ();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the number of search results which can be displayed.
|
* Return the number of search results which can be displayed.
|
||||||
* As currently implemented, this returns a constant 10.
|
* As currently implemented, this returns a constant 10.
|
||||||
|
@ -600,6 +482,143 @@ class SearchWindow : public GuiWindow
|
||||||
int
|
int
|
||||||
getSearchResultsSize(void) throw ();
|
getSearchResultsSize(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event handler for the simple Search button getting clicked.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onSimpleSearch(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event handler for the advanced Search button getting clicked.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onAdvancedSearch(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event handler for changed selection in the Browse view.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onBrowse(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do the searching (first set of results).
|
||||||
|
* Sets the offset to 0, and calls onSearch().
|
||||||
|
*
|
||||||
|
* @param criteria the search criteria.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onInitialSearch(Ptr<SearchCriteria>::Ref criteria) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do the searching (after paging backward or forward).
|
||||||
|
* Sets the offset to the given value, and calls onSearch().
|
||||||
|
*
|
||||||
|
* @param offset the new offset to use for this search.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onContinuedSearch(int offset) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do the searching.
|
||||||
|
* Calls either localSearch() or remoteSearch().
|
||||||
|
*
|
||||||
|
* @param criteria the search criteria.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onSearch(Ptr<SearchCriteria>::Ref criteria) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal handler for the mouse clicked on one of the entries.
|
||||||
|
*
|
||||||
|
* @param event the button event received
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onEntryClicked(GdkEventButton * event) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal handler for the user double-clicking, or pressing Enter
|
||||||
|
* on one of the entries.
|
||||||
|
*
|
||||||
|
* @param event the button event recieved
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onDoubleClick(const Gtk::TreeModel::Path & path,
|
||||||
|
const Gtk::TreeViewColumn * column)
|
||||||
|
throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a playable to the scratchpad.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onAddToScratchpad(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal handler for the "add to playlist" menu item selected from
|
||||||
|
* the entry context menu.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onAddToPlaylist(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a playable to the live mode.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onAddToLiveMode(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal handler for the "edit playlist" menu item selected from
|
||||||
|
* the entry context menu.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onEditPlaylist(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal handler for the "schedule playlist" menu item selected
|
||||||
|
* from the entry context menu.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onSchedulePlaylist(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal handler for the "export playlist" menu item selected from
|
||||||
|
* the entry context menu.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onExportPlaylist(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal handler for "upload to hub" in the context menu.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onUploadToHub(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal handler for "download from hub" in the context menu.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onDownloadFromHub(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event handler for a click on the Backward button.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onBackwardButtonClicked(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event handler for a click on the Forward button.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
onForwardButtonClicked(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event handler called when the the window gets hidden.
|
||||||
|
*
|
||||||
|
* This overrides GuiWindow::on_hide(), and closes the Export Playlist
|
||||||
|
* window, if it is still open.
|
||||||
|
*/
|
||||||
|
virtual void
|
||||||
|
on_hide(void) throw ();
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -200,6 +200,9 @@ root:table
|
||||||
transportsTab:string { "Transfers" }
|
transportsTab:string { "Transfers" }
|
||||||
|
|
||||||
searchButtonLabel:string { "Search" }
|
searchButtonLabel:string { "Search" }
|
||||||
|
backwardButtonLabel:string { "⇦ Previous" }
|
||||||
|
forwardButtonLabel:string { "Next ⇨" }
|
||||||
|
searchResultsCountLabel:string { "{0}-{1} of {2} results" }
|
||||||
|
|
||||||
typeColumnLabel:string { "Type" }
|
typeColumnLabel:string { "Type" }
|
||||||
titleColumnLabel:string { "Title" }
|
titleColumnLabel:string { "Title" }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue