[JVM] Add printers info
This commit is contained in:
@@ -165,6 +165,13 @@
|
||||
<string name="hardware_motherboard">Základní deska</string>
|
||||
<string name="hardware_network_interfaces">Síťové rozhraní</string>
|
||||
<string name="hardware_power_sources">Zdroje energie</string>
|
||||
<string name="hardware_printers">Tiskárny</string>
|
||||
<string name="hardware_printers_status">Stav: %1$s\nVýchozí: %2$s\nLokální: %3$s\nPort: %4$s</string>
|
||||
<string name="hardware_printers_status_idle">Nečinná</string>
|
||||
<string name="hardware_printers_status_printing">Tisk</string>
|
||||
<string name="hardware_printers_status_error">Chyba</string>
|
||||
<string name="hardware_printers_status_offline">Offline</string>
|
||||
<string name="hardware_printers_status_unknown">Neznámý</string>
|
||||
|
||||
<string name="general">Obecné</string>
|
||||
<string name="temperature_unit">Jednotka teploty</string>
|
||||
|
||||
@@ -165,6 +165,13 @@
|
||||
<string name="hardware_motherboard">Motherboard</string>
|
||||
<string name="hardware_network_interfaces">Netzwerkschnittstellen</string>
|
||||
<string name="hardware_power_sources">Stromquellen</string>
|
||||
<string name="hardware_printers">Drucker</string>
|
||||
<string name="hardware_printers_status">Status: %1$s\nStandard: %2$s\nLokal: %3$s\nAnschluss: %4$s</string>
|
||||
<string name="hardware_printers_status_idle">Bereit</string>
|
||||
<string name="hardware_printers_status_printing">Druckt</string>
|
||||
<string name="hardware_printers_status_error">Fehler</string>
|
||||
<string name="hardware_printers_status_offline">Offline</string>
|
||||
<string name="hardware_printers_status_unknown">Unbekannt</string>
|
||||
|
||||
<string name="general">Allgemein</string>
|
||||
<string name="temperature_unit">Temperatureinheit</string>
|
||||
|
||||
@@ -171,6 +171,13 @@
|
||||
<string name="hardware_motherboard">Placa base</string>
|
||||
<string name="hardware_network_interfaces">Interfaces de red</string>
|
||||
<string name="hardware_power_sources">Fuentes de alimentación</string>
|
||||
<string name="hardware_printers">Impresoras</string>
|
||||
<string name="hardware_printers_status">Estado: %1$s\nPredeterminada: %2$s\nLocal: %3$s\nPuerto: %4$s</string>
|
||||
<string name="hardware_printers_status_idle">Inactiva</string>
|
||||
<string name="hardware_printers_status_printing">Imprimiendo</string>
|
||||
<string name="hardware_printers_status_error">Error</string>
|
||||
<string name="hardware_printers_status_offline">Sin conexión</string>
|
||||
<string name="hardware_printers_status_unknown">Desconocido</string>
|
||||
|
||||
<!--Prefs-->
|
||||
<string name="general">General</string>
|
||||
|
||||
@@ -172,6 +172,13 @@
|
||||
<string name="hardware_motherboard">Płyta główna</string>
|
||||
<string name="hardware_network_interfaces">Interfejsy sieciowe</string>
|
||||
<string name="hardware_power_sources">Źródła zasilania</string>
|
||||
<string name="hardware_printers">Drukarki</string>
|
||||
<string name="hardware_printers_status">Status: %1$s\nDomyślna: %2$s\nLokalna: %3$s\nPort: %4$s</string>
|
||||
<string name="hardware_printers_status_idle">Bezczynna</string>
|
||||
<string name="hardware_printers_status_printing">Drukowanie</string>
|
||||
<string name="hardware_printers_status_error">Błąd</string>
|
||||
<string name="hardware_printers_status_offline">Offline</string>
|
||||
<string name="hardware_printers_status_unknown">Nieznany</string>
|
||||
|
||||
<!--Prefs-->
|
||||
<string name="general">Ogólne</string>
|
||||
|
||||
@@ -213,6 +213,13 @@
|
||||
<string name="hardware_camera_orientation_format" translatable="false">\t\t%1$s</string>
|
||||
<string name="hardware_sound_card_format" translatable="false">\t%1$s %2$s</string>
|
||||
<string name="hardware_camera_lens_format" translatable="false">\t\t%1$s</string>
|
||||
<string name="hardware_printers">Printers</string>
|
||||
<string name="hardware_printers_status">Status: %1$s\nDefault: %2$s\nLocal: %3$s\nPort: %4$s</string>
|
||||
<string name="hardware_printers_status_idle">Idle</string>
|
||||
<string name="hardware_printers_status_printing">Printing</string>
|
||||
<string name="hardware_printers_status_error">Error</string>
|
||||
<string name="hardware_printers_status_offline">Offline</string>
|
||||
<string name="hardware_printers_status_unknown">Unknown</string>
|
||||
|
||||
<!--Prefs-->
|
||||
<string name="general">General</string>
|
||||
|
||||
+1
-1
@@ -39,6 +39,6 @@ class GetHardwareDataInteractor(
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val REFRESH_DELAY = 5000L
|
||||
private const val REFRESH_DELAY = 3000L
|
||||
}
|
||||
}
|
||||
|
||||
+152
-90
@@ -23,15 +23,25 @@ import com.kgurgul.cpuinfo.shared.hardware_firmware
|
||||
import com.kgurgul.cpuinfo.shared.hardware_motherboard
|
||||
import com.kgurgul.cpuinfo.shared.hardware_network_interfaces
|
||||
import com.kgurgul.cpuinfo.shared.hardware_power_sources
|
||||
import com.kgurgul.cpuinfo.shared.hardware_printers
|
||||
import com.kgurgul.cpuinfo.shared.hardware_printers_status
|
||||
import com.kgurgul.cpuinfo.shared.hardware_printers_status_error
|
||||
import com.kgurgul.cpuinfo.shared.hardware_printers_status_idle
|
||||
import com.kgurgul.cpuinfo.shared.hardware_printers_status_offline
|
||||
import com.kgurgul.cpuinfo.shared.hardware_printers_status_printing
|
||||
import com.kgurgul.cpuinfo.shared.hardware_printers_status_unknown
|
||||
import com.kgurgul.cpuinfo.shared.hardware_uuid
|
||||
import com.kgurgul.cpuinfo.shared.manufacturer
|
||||
import com.kgurgul.cpuinfo.shared.model
|
||||
import com.kgurgul.cpuinfo.shared.serial
|
||||
import com.kgurgul.cpuinfo.shared.sound_card
|
||||
import com.kgurgul.cpuinfo.shared.temperature
|
||||
import com.kgurgul.cpuinfo.utils.ResourceUtils
|
||||
import org.koin.core.component.KoinComponent
|
||||
import org.koin.core.component.inject
|
||||
import oshi.SystemInfo
|
||||
import oshi.hardware.HardwareAbstractionLayer
|
||||
import oshi.hardware.Printer
|
||||
|
||||
actual class HardwareDataProvider actual constructor() : KoinComponent {
|
||||
|
||||
@@ -42,104 +52,156 @@ actual class HardwareDataProvider actual constructor() : KoinComponent {
|
||||
actual suspend fun getData(): List<ItemValue> {
|
||||
val hardware = systemInfo.hardware
|
||||
return buildList {
|
||||
add(ItemValue.NameResource(Res.string.hardware_computer_system, ""))
|
||||
add(
|
||||
ItemValue.NameResource(
|
||||
Res.string.manufacturer,
|
||||
hardware.computerSystem.manufacturer,
|
||||
)
|
||||
)
|
||||
add(ItemValue.NameResource(Res.string.model, hardware.computerSystem.model))
|
||||
add(ItemValue.NameResource(Res.string.serial, hardware.computerSystem.serialNumber))
|
||||
add(
|
||||
ItemValue.NameResource(
|
||||
Res.string.hardware_uuid,
|
||||
hardware.computerSystem.hardwareUUID,
|
||||
)
|
||||
)
|
||||
val firmware =
|
||||
buildString {
|
||||
if (hardware.computerSystem.firmware.manufacturer != UNKNOWN) {
|
||||
append(hardware.computerSystem.firmware.manufacturer)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.firmware.name != UNKNOWN) {
|
||||
append(hardware.computerSystem.firmware.name)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.firmware.version != UNKNOWN) {
|
||||
append(hardware.computerSystem.firmware.version)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.firmware.description != UNKNOWN) {
|
||||
append(hardware.computerSystem.firmware.description)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.firmware.releaseDate != UNKNOWN) {
|
||||
append(hardware.computerSystem.firmware.releaseDate)
|
||||
}
|
||||
}
|
||||
.trim()
|
||||
val motherboard =
|
||||
buildString {
|
||||
if (hardware.computerSystem.baseboard.manufacturer != UNKNOWN) {
|
||||
append(hardware.computerSystem.baseboard.manufacturer)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.baseboard.model != UNKNOWN) {
|
||||
append(hardware.computerSystem.baseboard.model)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.baseboard.version != UNKNOWN) {
|
||||
append(hardware.computerSystem.baseboard.version)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.baseboard.serialNumber != UNKNOWN) {
|
||||
append(hardware.computerSystem.baseboard.serialNumber)
|
||||
}
|
||||
}
|
||||
.trim()
|
||||
add(ItemValue.NameResource(Res.string.hardware_firmware, firmware))
|
||||
add(ItemValue.NameResource(Res.string.hardware_motherboard, motherboard))
|
||||
addMainHardwareInfo(hardware)
|
||||
addSoundCardInfo(hardware)
|
||||
addNetworkInfo(hardware)
|
||||
addPowerSourceInfo(hardware)
|
||||
addPrintersInfo(hardware)
|
||||
}
|
||||
}
|
||||
|
||||
if (hardware.soundCards.isNotEmpty()) {
|
||||
add(ItemValue.NameResource(Res.string.sound_card, ""))
|
||||
hardware.soundCards.forEach { soundCard ->
|
||||
add(ItemValue.Text(soundCard.name, soundCard.driverVersion))
|
||||
private fun MutableList<ItemValue>.addMainHardwareInfo(hardware: HardwareAbstractionLayer) {
|
||||
add(ItemValue.NameResource(Res.string.hardware_computer_system, ""))
|
||||
add(ItemValue.NameResource(Res.string.manufacturer, hardware.computerSystem.manufacturer))
|
||||
add(ItemValue.NameResource(Res.string.model, hardware.computerSystem.model))
|
||||
add(ItemValue.NameResource(Res.string.serial, hardware.computerSystem.serialNumber))
|
||||
add(ItemValue.NameResource(Res.string.hardware_uuid, hardware.computerSystem.hardwareUUID))
|
||||
val firmware =
|
||||
buildString {
|
||||
if (hardware.computerSystem.firmware.manufacturer != UNKNOWN) {
|
||||
append(hardware.computerSystem.firmware.manufacturer)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.firmware.name != UNKNOWN) {
|
||||
append(hardware.computerSystem.firmware.name)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.firmware.version != UNKNOWN) {
|
||||
append(hardware.computerSystem.firmware.version)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.firmware.description != UNKNOWN) {
|
||||
append(hardware.computerSystem.firmware.description)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.firmware.releaseDate != UNKNOWN) {
|
||||
append(hardware.computerSystem.firmware.releaseDate)
|
||||
}
|
||||
}
|
||||
}
|
||||
.trim()
|
||||
val motherboard =
|
||||
buildString {
|
||||
if (hardware.computerSystem.baseboard.manufacturer != UNKNOWN) {
|
||||
append(hardware.computerSystem.baseboard.manufacturer)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.baseboard.model != UNKNOWN) {
|
||||
append(hardware.computerSystem.baseboard.model)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.baseboard.version != UNKNOWN) {
|
||||
append(hardware.computerSystem.baseboard.version)
|
||||
append(" ")
|
||||
}
|
||||
if (hardware.computerSystem.baseboard.serialNumber != UNKNOWN) {
|
||||
append(hardware.computerSystem.baseboard.serialNumber)
|
||||
}
|
||||
}
|
||||
.trim()
|
||||
add(ItemValue.NameResource(Res.string.hardware_firmware, firmware))
|
||||
add(ItemValue.NameResource(Res.string.hardware_motherboard, motherboard))
|
||||
}
|
||||
|
||||
if (hardware.networkIFs.isNotEmpty()) {
|
||||
add(ItemValue.NameResource(Res.string.hardware_network_interfaces, ""))
|
||||
hardware.networkIFs.forEach { networkIF ->
|
||||
val value =
|
||||
buildString {
|
||||
appendLine(networkIF.macaddr)
|
||||
if (networkIF.iPv4addr.isNotEmpty()) {
|
||||
appendLine(networkIF.iPv4addr.joinToString { "\n" })
|
||||
}
|
||||
if (networkIF.iPv6addr.isNotEmpty()) {
|
||||
appendLine(networkIF.iPv6addr.joinToString { "\n" })
|
||||
}
|
||||
private fun MutableList<ItemValue>.addSoundCardInfo(hardware: HardwareAbstractionLayer) {
|
||||
if (hardware.soundCards.isNotEmpty()) {
|
||||
add(ItemValue.NameResource(Res.string.sound_card, ""))
|
||||
hardware.soundCards.forEach { soundCard ->
|
||||
add(ItemValue.Text(soundCard.name, soundCard.driverVersion))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun MutableList<ItemValue>.addNetworkInfo(hardware: HardwareAbstractionLayer) {
|
||||
if (hardware.networkIFs.isNotEmpty()) {
|
||||
add(ItemValue.NameResource(Res.string.hardware_network_interfaces, ""))
|
||||
hardware.networkIFs.forEach { networkIF ->
|
||||
val value =
|
||||
buildString {
|
||||
appendLine(networkIF.macaddr)
|
||||
if (networkIF.iPv4addr.isNotEmpty()) {
|
||||
appendLine(networkIF.iPv4addr.joinToString { "\n" })
|
||||
}
|
||||
.trim()
|
||||
add(ItemValue.Text(networkIF.name, value))
|
||||
if (networkIF.iPv6addr.isNotEmpty()) {
|
||||
appendLine(networkIF.iPv6addr.joinToString { "\n" })
|
||||
}
|
||||
}
|
||||
.trim()
|
||||
add(ItemValue.Text(networkIF.name, value))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun MutableList<ItemValue>.addPowerSourceInfo(
|
||||
hardware: HardwareAbstractionLayer
|
||||
) {
|
||||
if (hardware.powerSources.isNotEmpty()) {
|
||||
add(ItemValue.NameResource(Res.string.hardware_power_sources, ""))
|
||||
hardware.powerSources.forEach { powerSource ->
|
||||
add(ItemValue.Text(powerSource.name, powerSource.deviceName))
|
||||
if (powerSource.temperature != 0.0) {
|
||||
add(
|
||||
ItemValue.NameResource(
|
||||
Res.string.temperature,
|
||||
temperatureFormatter.format(powerSource.temperature.toFloat()),
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hardware.powerSources.isNotEmpty()) {
|
||||
add(ItemValue.NameResource(Res.string.hardware_power_sources, ""))
|
||||
hardware.powerSources.forEach { powerSource ->
|
||||
add(ItemValue.Text(powerSource.name, powerSource.deviceName))
|
||||
if (powerSource.temperature != 0.0) {
|
||||
add(
|
||||
ItemValue.NameResource(
|
||||
Res.string.temperature,
|
||||
temperatureFormatter.format(powerSource.temperature.toFloat()),
|
||||
)
|
||||
)
|
||||
private fun MutableList<ItemValue>.addPrintersInfo(hardware: HardwareAbstractionLayer) {
|
||||
if (hardware.printers.isNotEmpty()) {
|
||||
add(ItemValue.NameResource(Res.string.hardware_printers, ""))
|
||||
hardware.printers.forEach { printer ->
|
||||
val name =
|
||||
buildString {
|
||||
appendLine(printer.name)
|
||||
if (!printer.driverName.isNullOrEmpty()) {
|
||||
appendLine(printer.driverName)
|
||||
}
|
||||
if (!printer.description.isNullOrEmpty()) {
|
||||
appendLine(printer.description)
|
||||
}
|
||||
if (
|
||||
!printer.statusReason.isNullOrEmpty() &&
|
||||
!printer.statusReason.equals(UNKNOWN, ignoreCase = true)
|
||||
) {
|
||||
appendLine(printer.statusReason)
|
||||
}
|
||||
}
|
||||
.trim()
|
||||
val status =
|
||||
when (printer.status) {
|
||||
Printer.PrinterStatus.IDLE -> Res.string.hardware_printers_status_idle
|
||||
Printer.PrinterStatus.PRINTING ->
|
||||
Res.string.hardware_printers_status_printing
|
||||
Printer.PrinterStatus.ERROR -> Res.string.hardware_printers_status_error
|
||||
Printer.PrinterStatus.OFFLINE -> Res.string.hardware_printers_status_offline
|
||||
Printer.PrinterStatus.UNKNOWN -> Res.string.hardware_printers_status_unknown
|
||||
}
|
||||
}
|
||||
add(
|
||||
ItemValue.FormattedValueResource(
|
||||
name,
|
||||
Res.string.hardware_printers_status,
|
||||
listOf(
|
||||
status,
|
||||
ResourceUtils.getYesNoStringResource(printer.isDefault),
|
||||
ResourceUtils.getYesNoStringResource(printer.isLocal),
|
||||
printer.portName,
|
||||
),
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user