12 _eject_button = builder->get_widget<Gtk::Button>(
"ejectButton");
24 Gtk::Window* window =
dynamic_cast<Gtk::Window*
>(root);
27 _ipod_button = builder->get_widget<Gtk::Button>(
"ipodButton");
28 _album_label = builder->get_widget<Gtk::Label>(
"albumLabel");
31 _tracks_list_store = std::dynamic_pointer_cast<Gtk::ListStore>(builder->get_object(
"tracksListStore"));
37 auto renderer = Gtk::make_managed<Gtk::CellRendererProgress>();
39 _tracks_tree_view->get_column(idx - 1)->set_sizing(Gtk::TreeViewColumn::Sizing::FIXED);
49 _tracks_tree_view->get_column_cell_renderer(1)->set_property(
"ellipsize", Pango::EllipsizeMode::END);
69 _album_label->set_text(disc ? disc->title() :
"No Disc");
75 for (
unsigned int i = 0; i < disc->tracks().size(); i++) {
81 std::stringstream lengthStream;
82 const unsigned int seconds = disc->track_length(i + 1);
83 lengthStream << seconds / 60
85 << std::setw(2) << std::setfill(
'0')
106 for (
unsigned int i = 0; i < track - 1; i++)
127 for (
unsigned int i = 0; i < track - 1; i++)
169 Gtk::TreeModel::iterator it = selection->get_selected();
Gtk::TreeModelColumn< Glib::ustring > title_column
Track title column.
Gtk::TreeModelColumn< Glib::ustring > length_column
Track length column.
Gtk::TreeModelColumn< int > progress_column
Track rip progress column.
Gtk::TreeModelColumn< guint > number_column
Track number column.
void enable_eject_button(const bool enable)
Enables or disables the normal eject button.
Gtk::Button * _eject_button
Normal eject button.
sig_track_selected signal_track_selected()
Getter for _signal_track_selected.
void set_disc(const DiscDB::Disc *const disc)
Sets the DiscDB::Disc containing all information about the inserted disc.
void show_ipod_button(const bool show)
Shows or hides the iPod button (rip button).
Gtk::Label * _album_label
Label displaying the album title.
sig_eject_requested signal_eject_requested()
Getter for _signal_eject_requested.
sig_rip_requested _signal_rip_requested
Emitted when the iPod (rip) button is clicked.
~DiscComponent()
DiscComponent destructor.
void enable_ipod_button(const bool enable)
Enables or disables the iPod button (rip button).
void show_progress(const bool show)
Shows or hides the rip progress column in the track listing.
Gtk::MenuButton * _double_eject_button
Eject button with disc/iPod selection.
sig_eject_requested _signal_eject_requested
Emitted when an eject button is used.
void on_eject_button_clicked()
Called when the normal eject button is clicked.
sigc::signal< void(unsigned int)> sig_track_selected
"Track selected" signal type.
void on_row_activated(const Gtk::TreeModel::Path &path, Gtk::TreeView::Column *)
Called when a track is double-clicked in the track list.
void on_ipod_button_clicked()
Called when the iPod (rip) button is clicked.
void on_eject(const DriveManager::Drive drive)
Called after successful ejection of a drive.
Gtk::TreeView * _tracks_tree_view
Shows the track list.
Gtk::Button * _ipod_button
Shown when the iPod is connected, enabled when ripping is possible.
Gtk::Stack * _eject_button_stack
Stack that switches between eject buttons.
void set_selection(unsigned int track)
Sets the selection in the track listing.
sigc::signal< void(unsigned int)> sig_rip_requested
"Rip requested" signal type.
DriveManager & _drive_manager
Used to eject the disc.
Glib::RefPtr< Gio::SimpleActionGroup > _eject_action_group
Action group for disc/iPod eject button menu.
sig_track_selected _signal_track_selected
Emitted when a track is double-clicked in the track list.
void clear_selection()
Clears the selection in the track listing.
Glib::RefPtr< Gio::Menu > _double_eject_button_menu
Disc/iPod eject button selection menu.
void update_track_progress(unsigned int track, unsigned int progress)
Updates the percentage completion in the track listing for a given track with a given percentage.
sig_rip_requested signal_rip_requested()
Getter for _signal_rip_requested.
DiscComponent(DriveManager &drive_manager, Glib::RefPtr< Gtk::Builder > builder)
DiscComponent constructor.
Gtk::Label * _album_artist_label
Label displaying the album artist.
sigc::signal< void(DriveManager::Drive)> sig_eject_requested
"Drive eject requested" signal type.
void show_double_eject_button(const bool show)
Switches between the normal eject button and the eject button with disc/iPod selection.
Glib::RefPtr< Gtk::ListStore > _tracks_list_store
Track list model.
Manages the state of the disc drive and any removable (iPod) drive.
Drive
The two drives supported.