Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/EdgeTX/edgetx into main-Log…
Browse files Browse the repository at this point in the history
…icSwitch2-testmergeMain-18oct22

* 'main' of https://github.com/EdgeTX/edgetx: (101 commits)
  feat(color): mix/output bars show '0%' (EdgeTX#2592)
  fix(lua): send EVT_VIRTUAL_EXIT only on short EXIT press (EdgeTX#2573)
  fix(color): Write pending changes to model before duplicate (EdgeTX#2579)
  fix(color): min/max highlighting should depend on mixer channel value (EdgeTX#2582)
  fix(gf): reset global function context if disabled (EdgeTX#2578)
  fix(color): clear spectrum analyser data buffer on init
  fix(color): check `theme` before accessing it
  fix(cpn): Workaround MacOS 13 filesystem type change (EdgeTX#2564)
  chore(adc): store constant structs in FLASH (EdgeTX#2551)
  fix(color): copy/paste inputs/mixers (EdgeTX#2545)
  fix(color): RF power drop-down (EdgeTX#2547)
  fix(color): module setup sub-type after selecting MPM (EdgeTX#2548)
  fix(B&W): `a~x` not being displayed correctly (EdgeTX#2539)
  fix(X10): Simulated page up in menu toolbar (EdgeTX#2543)
  fix: hard coded special characters (EdgeTX#2538)
  feat(color): single press to trigger model select menu (EdgeTX#2533)
  fix(color): shortcut for model select (EdgeTX#2528)
  fix(color): screen / widget setup (EdgeTX#2532)
  fix(NV14/EL18): Reduce LCD pixel clock to 1000000 (EdgeTX#2525)
  fix: clear internal module FIFO after DMA init (EdgeTX#2527)
  ...

# Conflicts:
#	radio/src/fonts/lvgl/lv_font_noto_cn_24.c
#	radio/src/fonts/lvgl/lv_font_noto_tw_24.c
#	radio/src/gui/colorlcd/model_mixes.cpp
#	radio/src/gui/colorlcd/output_edit.cpp
#	radio/src/gui/colorlcd/screen_setup.cpp
#	radio/src/gui/colorlcd/view_about.cpp
#	radio/src/storage/modelslist.cpp
#	radio/src/translations/cn.h
#	radio/src/translations/de.h
#	radio/src/translations/en.h
#	radio/src/translations/se.h
#	radio/src/translations/tw.h
  • Loading branch information
shane-droid committed Oct 18, 2022
2 parents b109d7d + c8d6a50 commit 07425f6
Show file tree
Hide file tree
Showing 192 changed files with 118,072 additions and 6,425 deletions.
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[submodule "libopenui"]
path = radio/src/thirdparty/libopenui
url = https://github.com/EdgeTX/libopenui.git
url = https://github.com/edgetx/libopenui.git
[submodule "radio/src/thirdparty/AccessDenied"]
path = radio/src/thirdparty/AccessDenied
url = https://github.com/raphaelcoeffic/AccessDenied.git
Expand Down
2 changes: 2 additions & 0 deletions companion/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,8 @@ elseif(PCB STREQUAL X7 AND PCBREV STREQUAL ZORRO)
set(FLAVOUR zorro)
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL LR3PRO)
set(FLAVOUR lr3pro)
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL COMMANDO8)
set(FLAVOUR commando8)
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T8)
set(FLAVOUR t8)
elseif(PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019)
Expand Down
30 changes: 20 additions & 10 deletions companion/src/companion.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,26 @@
<file>images/simulator/XLITE/right_left.png</file>
<file>images/simulator/XLITE/right_up.png</file>
<file>images/simulator/XLITE/right_down.png</file>
<file>images/simulator/LR3PRO/top.png</file>
<file>images/simulator/LR3PRO/bottom.png</file>
<file>images/simulator/LR3PRO/left.png</file>
<file>images/simulator/LR3PRO/right.png</file>
<file>images/simulator/LR3PRO/right_plus.png</file>
<file>images/simulator/LR3PRO/right_minus.png</file>
<file>images/simulator/LR3PRO/right_up.png</file>
<file>images/simulator/LR3PRO/right_down.png</file>
<file>images/simulator/LR3PRO/right_enter.png</file>
<file>images/simulator/LR3PRO/left_escape.png</file>
<file>images/simulator/Commando8/left-mdl.png</file>
<file>images/simulator/Commando8/left-rtn.png</file>
<file>images/simulator/Commando8/left-sys.png</file>
<file>images/simulator/Commando8/right-up.png</file>
<file>images/simulator/Commando8/right-dn.png</file>
<file>images/simulator/Commando8/right-pageup.png</file>
<file>images/simulator/Commando8/right-pagedn.png</file>
<file>images/simulator/Commando8/right-ent.png</file>
<file>images/simulator/Commando8/top.png</file>
<file>images/simulator/Commando8/bottom.png</file>
<file>images/simulator/JumperT12/right_up.png</file>
<file>images/simulator/JumperT12/right_down.png</file>
<file>images/simulator/JumperT12/right_right.png</file>
Expand Down Expand Up @@ -214,16 +234,6 @@
<file>images/simulator/Zorro/right-mdl.png</file>
<file>images/simulator/Zorro/bottom.png</file>
<file>images/simulator/Zorro/top.png</file>
<file>images/simulator/LR3PRO/top.png</file>
<file>images/simulator/LR3PRO/bottom.png</file>
<file>images/simulator/LR3PRO/left.png</file>
<file>images/simulator/LR3PRO/right.png</file>
<file>images/simulator/LR3PRO/right_plus.png</file>
<file>images/simulator/LR3PRO/right_minus.png</file>
<file>images/simulator/LR3PRO/right_up.png</file>
<file>images/simulator/LR3PRO/right_down.png</file>
<file>images/simulator/LR3PRO/right_enter.png</file>
<file>images/simulator/LR3PRO/left_escape.png</file>
<file>images/simulator/T8/left.png</file>
<file>images/simulator/T8/left-pageup.png</file>
<file>images/simulator/T8/left-pagedn.png</file>
Expand Down
25 changes: 22 additions & 3 deletions companion/src/firmwares/boards.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ uint32_t Boards::getFourCC(Type board)
return 0x3278746F;
case BOARD_BETAFPV_LR3PRO:
return 0x4578746F;
case BOARD_IFLIGHT_COMMANDO8:
return 0x4B78746F; // TODO : Check this value
case BOARD_JUMPER_T12:
return 0x3D78746F;
case BOARD_JUMPER_TLITE:
Expand Down Expand Up @@ -127,6 +129,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_TARANIS_X9DP_2019:
case BOARD_TARANIS_X9E:
case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12:
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TPRO:
Expand Down Expand Up @@ -169,6 +172,7 @@ int Boards::getFlashSize(Type board)
case BOARD_TARANIS_X9DP_2019:
case BOARD_TARANIS_X9E:
case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12:
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TPRO:
Expand Down Expand Up @@ -296,6 +300,16 @@ SwitchInfo Boards::getSwitchInfo(Board::Type board, int index)
if (index < DIM(switches))
return switches[index];
}
else if (IS_IFLIGHT_COMMANDO8(board)) {
const Board::SwitchInfo switches[] = {
{SWITCH_2POS, "SA"},
{SWITCH_3POS, "SB"},
{SWITCH_3POS, "SC"},
{SWITCH_2POS, "SD"}
};
if (index < DIM(switches))
return switches[index];
}
else if (IS_JUMPER_T12(board)) {
const Board::SwitchInfo switches[] = {
{SWITCH_3POS, "SA"},
Expand Down Expand Up @@ -388,7 +402,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
case Pots:
if (IS_TARANIS_X9LITE(board))
return 1;
else if (IS_JUMPER_TLITE(board) || IS_BETAFPV_LR3PRO(board))
else if (IS_JUMPER_TLITE(board) || IS_BETAFPV_LR3PRO(board) || IS_IFLIGHT_COMMANDO8(board))
return 0;
else if (IS_TARANIS_SMALL(board) || IS_JUMPER_TPRO(board))
return 2;
Expand Down Expand Up @@ -452,7 +466,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
return 7;
else if (board == BOARD_TARANIS_X7)
return 8;
else if (board == BOARD_JUMPER_TLITE || board == BOARD_JUMPER_TPRO || board == BOARD_BETAFPV_LR3PRO)
else if (board == BOARD_JUMPER_TLITE || board == BOARD_JUMPER_TPRO || board == BOARD_BETAFPV_LR3PRO || board == BOARD_IFLIGHT_COMMANDO8)
return 4;
else if (board == BOARD_FLYSKY_NV14)
return 8;
Expand All @@ -477,7 +491,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
case FactoryInstalledSwitches:
if (IS_TARANIS_X9E(board))
return 8;
else if (IS_JUMPER_TLITE(board) || IS_JUMPER_TPRO(board) || IS_BETAFPV_LR3PRO(board))
else if (IS_JUMPER_TLITE(board) || IS_JUMPER_TPRO(board) || IS_BETAFPV_LR3PRO(board) || IS_IFLIGHT_COMMANDO8(board))
return 4;
else if(IS_RADIOMASTER_ZORRO(board))
return 8;
Expand All @@ -501,6 +515,8 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
case NumTrims:
if (IS_FAMILY_HORUS_OR_T16(board) && !IS_FLYSKY_NV14(board))
return 6;
else if (IS_IFLIGHT_COMMANDO8(board))
return 0;
else
return 4;

Expand Down Expand Up @@ -697,6 +713,8 @@ QString Boards::getBoardName(Board::Type board)
return "FlySky NV14";
case BOARD_BETAFPV_LR3PRO:
return "BETAFPV LR3PRO";
case BOARD_IFLIGHT_COMMANDO8:
return "iFlight Commando 8";
default:
return CPN_STR_UNKNOWN_ITEM;
}
Expand Down Expand Up @@ -910,6 +928,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_RADIOMASTER_ZORRO:
case BOARD_BETAFPV_LR3PRO:
case BOARD_RADIOMASTER_TX12_MK2:
case BOARD_IFLIGHT_COMMANDO8:
return (int)MODULE_TYPE_CROSSFIRE;

case BOARD_FLYSKY_NV14:
Expand Down
11 changes: 9 additions & 2 deletions companion/src/firmwares/boards.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ namespace Board {
BOARD_RADIOMASTER_ZORRO,
BOARD_JUMPER_TPRO,
BOARD_BETAFPV_LR3PRO,
BOARD_IFLIGHT_COMMANDO8,
BOARD_TYPE_COUNT,
BOARD_TYPE_MAX = BOARD_TYPE_COUNT - 1
};
Expand Down Expand Up @@ -249,6 +250,11 @@ inline bool IS_BETAFPV_LR3PRO(Board::Type board)
return board == Board::BOARD_BETAFPV_LR3PRO;
}

inline bool IS_IFLIGHT_COMMANDO8(Board::Type board)
{
return board == Board::BOARD_IFLIGHT_COMMANDO8;
}

inline bool IS_JUMPER_T12(Board::Type board)
{
return board == Board::BOARD_JUMPER_T12;
Expand Down Expand Up @@ -312,8 +318,9 @@ inline bool IS_FAMILY_T12(Board::Type board)
board == Board::BOARD_RADIOMASTER_ZORRO ||
board == Board::BOARD_RADIOMASTER_T8 ||
board == Board::BOARD_JUMPER_TLITE ||
board == Board::BOARD_JUMPER_TPRO ||
board == Board::BOARD_BETAFPV_LR3PRO ||
board == Board::BOARD_JUMPER_TPRO;
board == Board::BOARD_IFLIGHT_COMMANDO8;
}

inline bool IS_FLYSKY_NV14(Board::Type board)
Expand Down Expand Up @@ -373,7 +380,7 @@ inline bool IS_TARANIS_X9E(Board::Type board)

inline bool IS_TARANIS_SMALL(Board::Type board)
{
return IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board) || IS_FAMILY_T12(board) || IS_JUMPER_TPRO(board);
return IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board) || IS_FAMILY_T12(board);
}

inline bool IS_TARANIS(Board::Type board)
Expand Down
59 changes: 48 additions & 11 deletions companion/src/firmwares/edgetx/yaml_modeldata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -543,10 +543,12 @@ struct convert<ScriptData> {
node["file"] >> rhs.filename;
node["name"] >> rhs.name;

for (int i=0; i < CPN_MAX_SCRIPT_INPUTS; i++) {
if (node["inputs"][std::to_string(i)]) {
if (node["inputs"][std::to_string(i)]["u"]["value"]) {
node["inputs"][std::to_string(i)]["u"]["value"] >> rhs.inputs[i];
if (node["inputs"]) {
for (int i = 0; i < CPN_MAX_SCRIPT_INPUTS; i++) {
if (node["inputs"][std::to_string(i)]) {
if (node["inputs"][std::to_string(i)]["u"]["value"]) {
node["inputs"][std::to_string(i)]["u"]["value"] >> rhs.inputs[i];
}
}
}
}
Expand All @@ -555,17 +557,36 @@ struct convert<ScriptData> {
}
};

struct RFAlarms {
int warning = 0;
int critical = 0;

RFAlarms() {}

RFAlarms(const RSSIAlarmData& rhs)
: warning(rhs.warning), critical(rhs.critical)
{}
};

template <>
struct convert<RSSIAlarmData> {
static Node encode(const RSSIAlarmData& rhs)
struct convert<RFAlarms> {
static Node encode(const RFAlarms& rhs)
{
Node node;
node["disabled"] = (int)rhs.disabled;
node["warning"] = rhs.warning - 45;
node["critical"] = rhs.critical - 42;
node["warning"] = rhs.warning;
node["critical"] = rhs.critical;
return node;
}
static bool decode(const Node& node, RFAlarms& rhs)
{
node["warning"] >> rhs.warning;
node["critical"] >> rhs.critical;
return true;
}
};

template <>
struct convert<RSSIAlarmData> {
static bool decode(const Node& node, RSSIAlarmData& rhs)
{
node["disabled"] >> rhs.disabled;
Expand Down Expand Up @@ -904,7 +925,8 @@ Node convert<ModelData>::encode(const ModelData& rhs)
node["altitudeSource"] = YamlTelemSource(rhs.frsky.altitudeSource);
}

node["rssiAlarms"] = rhs.rssiAlarms;
node["rfAlarms"] = RFAlarms(rhs.rssiAlarms);
node["disableTelemetryWarning"] = (int)rhs.rssiAlarms.disabled;

for (int i=0; i<CPN_MAX_MODULES; i++) {
if (rhs.moduleData[i].protocol != PULSES_OFF) {
Expand Down Expand Up @@ -1096,7 +1118,22 @@ bool convert<ModelData>::decode(const Node& node, ModelData& rhs)
rhs.frsky.altitudeSource = altitudeSource.src;
}

node["rssiAlarms"] >> rhs.rssiAlarms;
if (node["rssiAlarms"]) {
// Old format (pre 2.8)
node["rssiAlarms"] >> rhs.rssiAlarms;
} else if (node["rfAlarms"] || node["disableTelemetryWarning"]) {
// New format (post 2.8)
RFAlarms rfAlarms;
node["rfAlarms"] >> rfAlarms;
rhs.rssiAlarms.warning = rfAlarms.warning;
rhs.rssiAlarms.critical = rfAlarms.critical;
node["disableTelemetryWarning"] >> rhs.rssiAlarms.disabled;
} else {
// Use old defaults
rhs.rssiAlarms.warning = 45;
rhs.rssiAlarms.critical = 42;
rhs.rssiAlarms.disabled = false;
}

node["moduleData"] >> rhs.moduleData;
for (int i=0; i<CPN_MAX_MODULES; i++) {
Expand Down
5 changes: 3 additions & 2 deletions companion/src/firmwares/opentx/opentxeeprom.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,13 @@
#define TARANIS_X9LITES_VARIANT 0x0801
#define JUMPER_T12_VARIANT 0x4001
#define RADIOMASTER_TX12_VARIANT 0x4002
#define BETAFPV_LR3PRO_VARIANT 0x4007
#define JUMPER_TLITE_VARIANT 0x4003
#define RADIOMASTER_T8_VARIANT 0x4004
#define RADIOMASTER_ZORRO_VARIANT 0x4006
#define JUMPER_TPRO_VARIANT 0x4005
#define RADIOMASTER_ZORRO_VARIANT 0x4006
#define BETAFPV_LR3PRO_VARIANT 0x4007
#define RADIOMASTER_TX12_MK2_VARIANT 0x4008
#define IFLIGHT_COMMANDO8_VARIANT 0x4009

class OpenTxGeneralData: public TransformedField {
public:
Expand Down
24 changes: 15 additions & 9 deletions companion/src/firmwares/opentx/opentxinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ const char * OpenTxEepromInterface::getName()
return "EdgeTX for FlySky NV14";
case BOARD_BETAFPV_LR3PRO:
return "EdgeTx for BETAFPV LR3PRO";
case BOARD_IFLIGHT_COMMANDO8:
return "EdgeTX for iFlight Commando 8";
default:
return "Board is unknown to EdgeTX";
}
Expand Down Expand Up @@ -347,9 +349,6 @@ int OpenTxEepromInterface::save(uint8_t * eeprom, const RadioData & radioData, u
else if (IS_TARANIS_XLITE(board)) {
variant |= TARANIS_XLITE_VARIANT;
}
else if (IS_BETAFPV_LR3PRO(board)) {
variant |= BETAFPV_LR3PRO_VARIANT;
}
else if (IS_JUMPER_T12(board)) {
variant |= JUMPER_T12_VARIANT;
}
Expand Down Expand Up @@ -721,6 +720,8 @@ int OpenTxFirmware::getCapability(::Capability capability)
return TARANIS_XLITE_VARIANT;
else if (IS_BETAFPV_LR3PRO(board))
return BETAFPV_LR3PRO_VARIANT;
else if (IS_IFLIGHT_COMMANDO8(board))
return IFLIGHT_COMMANDO8_VARIANT;
else if (IS_JUMPER_T12(board))
return JUMPER_T12_VARIANT;
else if (IS_JUMPER_TLITE(board))
Expand Down Expand Up @@ -793,7 +794,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
case HasIntModuleCRSF:
return id.contains("internalcrsf");
case HasIntModuleELRS:
return id.contains("internalelrs") || IS_RADIOMASTER_TX12_MK2(board);
return id.contains("internalelrs") || IS_RADIOMASTER_TX12_MK2(board) || IS_IFLIGHT_COMMANDO8(board);
case HasIntModuleFlySky:
return id.contains("afhds3") || IS_FLYSKY_NV14(board);
default:
Expand Down Expand Up @@ -1068,11 +1069,6 @@ bool OpenTxEepromInterface::checkVariant(unsigned int version, unsigned int vari
variantError = true;
}
}
else if (IS_BETAFPV_LR3PRO(board)) {
if (variant != BETAFPV_LR3PRO_VARIANT) {
variantError = true;
}
}
else if (IS_JUMPER_T12(board)) {
if (variant != JUMPER_T12_VARIANT) {
variantError = true;
Expand Down Expand Up @@ -1523,6 +1519,16 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);

/* Radiomaster T8 board */
firmware = new OpenTxFirmware(FIRMWAREID("commando8"), QCoreApplication::translate("Firmware", "iFlight Commando8"), BOARD_IFLIGHT_COMMANDO8);
addOpenTxCommonOptions(firmware);
firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support"));
firmware->addOption("nogvars", Firmware::tr("Disable Global variables"));
firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen"));
addOpenTxFontOptions(firmware);
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, NONE);

/* 9XR-Pro */
firmware = new OpenTxFirmware(FIRMWAREID("9xrpro"), Firmware::tr("Turnigy 9XR-PRO"), BOARD_9XRPRO);
addOpenTxArm9xOptions(firmware, false);
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added companion/src/images/simulator/Commando8/top.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions companion/src/modeledit/telemetry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -518,9 +518,9 @@ void TelemetryPanel::setup()
ui->ignoreSensorIds->setField(model->frsky.ignoreSensorIds, this);
ui->disableTelemetryAlarms->setField(model->rssiAlarms.disabled);

ui->rssiAlarmWarningSB->setRange(45 - 30, 45 + 30);
ui->rssiAlarmWarningSB->setRange(0, 127);
ui->rssiAlarmWarningSB->setValue(model->rssiAlarms.warning);
ui->rssiAlarmCriticalSB->setRange(42 - 30, 42 + 30);
ui->rssiAlarmCriticalSB->setRange(0, 127);
ui->rssiAlarmCriticalSB->setValue(model->rssiAlarms.critical);

ui->rssiSourceLabel->show();
Expand Down
2 changes: 1 addition & 1 deletion companion/src/radiointerface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ QString findMassstoragePath(const QString & filename, bool onlyPath)
QString probefile;
bool found = false;

QRegularExpression fstypeRe("^(v?fat|msdos)", QRegularExpression::CaseInsensitiveOption); // Linux: "vfat"; macOS: "msdos"; Win: "FAT32"
QRegularExpression fstypeRe("^(v?fat|msdos|lifs)", QRegularExpression::CaseInsensitiveOption); // Linux: "vfat"; macOS: "msdos" or "lifs"; Win: "FAT32"

foreach(const QStorageInfo & si, QStorageInfo::mountedVolumes()) {
//qDebug() << si.rootPath() << si.name() << si.device() << si.displayName() << si.fileSystemType() << si.isReady();
Expand Down
Loading

0 comments on commit 07425f6

Please sign in to comment.