lib: Clean up QueueModel switch statements
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
315a169136
commit
ad584900fa
|
@ -10,8 +10,6 @@
|
||||||
class QueueModel : public Gtk::TreeModel, public Glib::Object {
|
class QueueModel : public Gtk::TreeModel, public Glib::Object {
|
||||||
private:
|
private:
|
||||||
void increment_stamp();
|
void increment_stamp();
|
||||||
void get_value_uint(Track *, int, Glib::ValueBase &) const;
|
|
||||||
void get_value_str(Track *, int, Glib::ValueBase &) const;
|
|
||||||
bool check_iter_validity(const Gtk::TreeIter &) const;
|
bool check_iter_validity(const Gtk::TreeIter &) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
104
lib/model.cpp
104
lib/model.cpp
|
@ -91,77 +91,20 @@ int QueueModel::get_n_columns_vfunc() const
|
||||||
|
|
||||||
GType QueueModel::get_column_type_vfunc(int index) const
|
GType QueueModel::get_column_type_vfunc(int index) const
|
||||||
{
|
{
|
||||||
switch (index) {
|
if (index > 9)
|
||||||
case 0:
|
|
||||||
case 5:
|
|
||||||
case 7:
|
|
||||||
return G_TYPE_UINT;
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
case 3:
|
|
||||||
case 4:
|
|
||||||
case 6:
|
|
||||||
case 8:
|
|
||||||
case 9:
|
|
||||||
return G_TYPE_STRING;
|
|
||||||
default:
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
if (index == 0 || index == 5 || index == 7)
|
||||||
|
return G_TYPE_UINT;
|
||||||
|
return G_TYPE_STRING;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QueueModel::get_value_uint(Track *track, int column,
|
template <class T>
|
||||||
Glib::ValueBase &value) const
|
static void set_val(const T &t, Glib::ValueBase &value)
|
||||||
{
|
{
|
||||||
Glib::Value<unsigned int> specific;
|
Glib::Value<T> specific;
|
||||||
specific.init(Glib::Value<unsigned int>::value_type());
|
specific.init(Glib::Value<T>::value_type());
|
||||||
|
specific.set(t);
|
||||||
switch (column) {
|
value.init(specific.gobj());
|
||||||
case 0:
|
|
||||||
specific.set(track->track());
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
specific.set(track->album()->year());
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
specific.set(track->count());
|
|
||||||
}
|
|
||||||
|
|
||||||
value.init(Glib::Value<unsigned int>::value_type());
|
|
||||||
value = specific;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QueueModel::get_value_str(Track *track, int column,
|
|
||||||
Glib::ValueBase &value) const
|
|
||||||
{
|
|
||||||
Glib::Value<std::string> specific;
|
|
||||||
specific.init(Glib::Value<std::string>::value_type());
|
|
||||||
|
|
||||||
switch (column) {
|
|
||||||
case 1:
|
|
||||||
specific.set(track->name());
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
specific.set(track->length_str());
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
specific.set(track->artist()->name());
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
specific.set(track->album()->name());
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
specific.set(track->genre()->name());
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
specific.set(track->date());
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
specific.set(Glib::Markup::escape_text(track->path()));
|
|
||||||
}
|
|
||||||
|
|
||||||
value.init(Glib::Value<std::string>::value_type());
|
|
||||||
value = specific;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QueueModel::get_value_vfunc(const Gtk::TreeIter &iter, int column,
|
void QueueModel::get_value_vfunc(const Gtk::TreeIter &iter, int column,
|
||||||
|
@ -169,22 +112,33 @@ void QueueModel::get_value_vfunc(const Gtk::TreeIter &iter, int column,
|
||||||
{
|
{
|
||||||
Track *track;
|
Track *track;
|
||||||
|
|
||||||
if (!check_iter_validity(iter))
|
if (!check_iter_validity(iter) ||
|
||||||
return;
|
column > get_n_columns_vfunc())
|
||||||
|
|
||||||
if (column > get_n_columns_vfunc())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
track = queue->operator[](iter_to_id(iter));
|
track = queue->operator[](iter_to_id(iter));
|
||||||
|
|
||||||
switch (column) {
|
switch (column) {
|
||||||
case 0:
|
case 0:
|
||||||
|
return set_val(track->track(), value);
|
||||||
|
case 1:
|
||||||
|
return set_val(track->name(), value);
|
||||||
|
case 2:
|
||||||
|
return set_val(track->length_str(), value);
|
||||||
|
case 3:
|
||||||
|
return set_val(track->artist()->name(), value);
|
||||||
|
case 4:
|
||||||
|
return set_val(track->album()->name(), value);
|
||||||
case 5:
|
case 5:
|
||||||
|
return set_val(track->album()->year(), value);
|
||||||
|
case 6:
|
||||||
|
return set_val(track->genre()->name(), value);
|
||||||
case 7:
|
case 7:
|
||||||
get_value_uint(track, column, value);
|
return set_val(track->count(), value);
|
||||||
break;
|
case 8:
|
||||||
default:
|
return set_val(track->date(), value);
|
||||||
get_value_str(track, column, value);
|
case 9:
|
||||||
|
return set_val(Glib::Markup::escape_text(track->path()), value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue