void DeviceProperties::ShowDevice(int row) {
  if (ui_->icon->count() == 0) {
    // Only load the icons the first time the dialog is shown
    QStringList icon_names = QStringList()
                             << "drive-removable-media-usb-pendrive"
                             << "multimedia-player-ipod-mini-blue"
                             << "multimedia-player-ipod-mini-gold"
                             << "multimedia-player-ipod-mini-green"
                             << "multimedia-player-ipod-mini-pink"
                             << "multimedia-player-ipod-mini-silver"
                             << "multimedia-player-ipod-nano-black"
                             << "multimedia-player-ipod-nano-white"
                             << "multimedia-player-ipod-nano-green"
                             << "multimedia-player-ipod-shuffle"
                             << "multimedia-player-ipod-standard-color"
                             << "multimedia-player-ipod-standard-monochrome"
                             << "multimedia-player-ipod-U2-color"
                             << "multimedia-player-ipod-U2-monochrome"
                             << "ipodtouchicon"
                             << "phone"
                             << "phone-google-nexus-one"
                             << "phone-htc-g1-white"
                             << "phone-nokia-n900"
                             << "phone-palm-pre";

    for (const QString& icon_name : icon_names) {
      QListWidgetItem* item = new QListWidgetItem(IconLoader::Load(icon_name, 
                                                  IconLoader::Base),
                                                  QString(), ui_->icon);
      item->setData(Qt::UserRole, icon_name);
    }

    // Load the transcode formats the first time the dialog is shown
    for (const TranscoderPreset& preset : Transcoder::GetAllPresets()) {
      ui_->transcode_format->addItem(preset.name_, preset.type_);
    }
    ui_->transcode_format->model()->sort(0);
  }

  index_ = manager_->index(row);

  // Basic information
  ui_->name->setText(index_.data(DeviceManager::Role_FriendlyName).toString());

  // Find the right icon
  QString icon_name = index_.data(DeviceManager::Role_IconName).toString();
  for (int i = 0; i < ui_->icon->count(); ++i) {
    if (ui_->icon->item(i)->data(Qt::UserRole).toString() == icon_name) {
      ui_->icon->setCurrentRow(i);
      break;
    }
  }

  UpdateHardwareInfo();
  UpdateFormats();

  show();
}
void DeviceProperties::ModelChanged() {
    if (!isVisible()) return;

    if (!index_.isValid())
        reject();  // Device went away
    else {
        UpdateHardwareInfo();
        UpdateFormats();
    }
}