Added /me support for action messages on IRC
This commit is contained in:
parent
c141a38e9c
commit
e44d0ddeb6
41
src/main.ino
41
src/main.ino
@ -21,8 +21,8 @@
|
|||||||
#define MAX_LINES ((SCREEN_HEIGHT - INPUT_LINE_HEIGHT - STATUS_BAR_HEIGHT) / (CHAR_HEIGHT + LINE_SPACING))
|
#define MAX_LINES ((SCREEN_HEIGHT - INPUT_LINE_HEIGHT - STATUS_BAR_HEIGHT) / (CHAR_HEIGHT + LINE_SPACING))
|
||||||
|
|
||||||
#define BOARD_BAT_ADC 4 // Define the ADC pin used for battery reading
|
#define BOARD_BAT_ADC 4 // Define the ADC pin used for battery reading
|
||||||
#define CONV_FACTOR 1.8 // Conversion factor for the ADC to voltage conversion
|
#define CONV_FACTOR 1.8 // Conversion factor for the ADC to voltage conversion
|
||||||
#define READS 20 // Number of readings for averaging
|
#define READS 20 // Number of readings for averaging
|
||||||
Pangodream_18650_CL BL(BOARD_BAT_ADC, CONV_FACTOR, READS);
|
Pangodream_18650_CL BL(BOARD_BAT_ADC, CONV_FACTOR, READS);
|
||||||
|
|
||||||
TFT_eSPI tft = TFT_eSPI();
|
TFT_eSPI tft = TFT_eSPI();
|
||||||
@ -298,6 +298,19 @@ void displayLines() {
|
|||||||
String modeChange = line.substring(5);
|
String modeChange = line.substring(5);
|
||||||
tft.setTextColor(TFT_WHITE);
|
tft.setTextColor(TFT_WHITE);
|
||||||
tft.print(modeChange);
|
tft.print(modeChange);
|
||||||
|
cursorY += CHAR_HEIGHT;
|
||||||
|
} else if (line.startsWith("* ")) { // Check for action message
|
||||||
|
int spacePos = line.indexOf(' ', 2);
|
||||||
|
String senderNick = line.substring(2, spacePos);
|
||||||
|
String actionMessage = line.substring(spacePos + 1);
|
||||||
|
|
||||||
|
tft.setTextColor(TFT_WHITE);
|
||||||
|
tft.print("* ");
|
||||||
|
tft.setTextColor(nickColors[senderNick]);
|
||||||
|
tft.print(senderNick + " ");
|
||||||
|
tft.setTextColor(TFT_WHITE);
|
||||||
|
tft.print(actionMessage);
|
||||||
|
|
||||||
cursorY += CHAR_HEIGHT;
|
cursorY += CHAR_HEIGHT;
|
||||||
} else {
|
} else {
|
||||||
int colonPos = line.indexOf(':');
|
int colonPos = line.indexOf(':');
|
||||||
@ -321,6 +334,7 @@ void displayLines() {
|
|||||||
displayInputLine();
|
displayInputLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void addLine(String senderNick, String message, String type, bool mention = false) {
|
void addLine(String senderNick, String message, String type, bool mention = false) {
|
||||||
if (nickColors.find(senderNick) == nickColors.end())
|
if (nickColors.find(senderNick) == nickColors.end())
|
||||||
nickColors[senderNick] = generateRandomColor();
|
nickColors[senderNick] = generateRandomColor();
|
||||||
@ -344,6 +358,8 @@ void addLine(String senderNick, String message, String type, bool mention = fals
|
|||||||
formattedMessage = "KICK " + senderNick + message;
|
formattedMessage = "KICK " + senderNick + message;
|
||||||
} else if (type == "mode") {
|
} else if (type == "mode") {
|
||||||
formattedMessage = "MODE " + message;
|
formattedMessage = "MODE " + message;
|
||||||
|
} else if (type == "action") {
|
||||||
|
formattedMessage = "* " + senderNick + " " + message;
|
||||||
} else {
|
} else {
|
||||||
formattedMessage = senderNick + ": " + message;
|
formattedMessage = senderNick + ": " + message;
|
||||||
}
|
}
|
||||||
@ -361,6 +377,7 @@ void addLine(String senderNick, String message, String type, bool mention = fals
|
|||||||
displayLines();
|
displayLines();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void displayDeviceInfo() {
|
void displayDeviceInfo() {
|
||||||
tft.fillScreen(TFT_BLACK);
|
tft.fillScreen(TFT_BLACK);
|
||||||
printDeviceInfo();
|
printDeviceInfo();
|
||||||
@ -510,7 +527,14 @@ void parseAndDisplay(String line) {
|
|||||||
String message = line.substring(colonPos + 1);
|
String message = line.substring(colonPos + 1);
|
||||||
String senderNick = line.substring(1, line.indexOf('!'));
|
String senderNick = line.substring(1, line.indexOf('!'));
|
||||||
bool mention = message.indexOf(nick) != -1;
|
bool mention = message.indexOf(nick) != -1;
|
||||||
addLine(senderNick, message, "message", mention);
|
|
||||||
|
// This doesn't work for some annoying reason... even with \001
|
||||||
|
if (message.startsWith("\x01ACTION ") && message.endsWith("\x01")) {
|
||||||
|
String actionMessage = message.substring(8, message.length() - 1);
|
||||||
|
addLine(senderNick, actionMessage, "action");
|
||||||
|
} else {
|
||||||
|
addLine(senderNick, message, "message", mention);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (command == "JOIN" && line.indexOf(channel) != -1) {
|
} else if (command == "JOIN" && line.indexOf(channel) != -1) {
|
||||||
String senderNick = line.substring(1, line.indexOf('!'));
|
String senderNick = line.substring(1, line.indexOf('!'));
|
||||||
@ -538,6 +562,8 @@ void parseAndDisplay(String line) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void handleKeyboardInput(char key) {
|
void handleKeyboardInput(char key) {
|
||||||
if (key == '\n' || key == '\r') { // Enter
|
if (key == '\n' || key == '\r') { // Enter
|
||||||
if (inputBuffer.startsWith("/debug")) {
|
if (inputBuffer.startsWith("/debug")) {
|
||||||
@ -548,6 +574,11 @@ void handleKeyboardInput(char key) {
|
|||||||
} else if (inputBuffer.startsWith("/raw ")) {
|
} else if (inputBuffer.startsWith("/raw ")) {
|
||||||
String rawCommand = inputBuffer.substring(5);
|
String rawCommand = inputBuffer.substring(5);
|
||||||
sendRawCommand(rawCommand);
|
sendRawCommand(rawCommand);
|
||||||
|
} else if (inputBuffer.startsWith("/me ")) {
|
||||||
|
String actionMessage = inputBuffer.substring(4);
|
||||||
|
sendIRC("PRIVMSG " + String(channel) + " :\001ACTION " + actionMessage + "\001");
|
||||||
|
addLine(nick, actionMessage, "action");
|
||||||
|
inputBuffer = "";
|
||||||
} else {
|
} else {
|
||||||
sendIRC("PRIVMSG " + String(channel) + " :" + inputBuffer);
|
sendIRC("PRIVMSG " + String(channel) + " :" + inputBuffer);
|
||||||
addLine(nick, inputBuffer, "message");
|
addLine(nick, inputBuffer, "message");
|
||||||
@ -892,9 +923,7 @@ void printDeviceInfo() {
|
|||||||
uint32_t chipId = ESP.getEfuseMac(); // Unique ID
|
uint32_t chipId = ESP.getEfuseMac(); // Unique ID
|
||||||
esp_chip_info_t chip_info;
|
esp_chip_info_t chip_info;
|
||||||
esp_chip_info(&chip_info);
|
esp_chip_info(&chip_info);
|
||||||
String chipInfo = String(chip_info.model) + " Rev " + String(chip_info.revision) +
|
String chipInfo = String(chip_info.model) + " Rev " + String(chip_info.revision) + ", " + String(chip_info.cores) + " cores, " + String(ESP.getCpuFreqMHz()) + " MHz";
|
||||||
", " + String(chip_info.cores) + " cores, " +
|
|
||||||
String(ESP.getCpuFreqMHz()) + " MHz";
|
|
||||||
|
|
||||||
// Get Flash Info
|
// Get Flash Info
|
||||||
size_t flashSize = spi_flash_get_chip_size();
|
size_t flashSize = spi_flash_get_chip_size();
|
||||||
|
Loading…
Reference in New Issue
Block a user