tweak save

This commit is contained in:
mwalker33 2020-04-13 16:17:57 +10:00
commit 3b4f851d2d
4 changed files with 27 additions and 7 deletions

View file

@ -49,6 +49,7 @@ int preferences_load (void) {
// Set all defaults // Set all defaults
session.client_debug_level = OFF; session.client_debug_level = OFF;
session.window_changed = false;
session.window_plot_xpos = 10; session.window_plot_xpos = 10;
session.window_plot_ypos = 30; session.window_plot_ypos = 30;
session.window_plot_hsize = 400; session.window_plot_hsize = 400;
@ -61,6 +62,7 @@ int preferences_load (void) {
session.show_hints = false; session.show_hints = false;
session.supports_colors = false; session.supports_colors = false;
// loadFileJson wants these, so pass in place holder values, though not used // loadFileJson wants these, so pass in place holder values, though not used
// in settings load; // in settings load;
uint8_t dummyData = 0x00; uint8_t dummyData = 0x00;
@ -78,6 +80,7 @@ int preferences_load (void) {
// Save all settings from memory (struct) to file // Save all settings from memory (struct) to file
int preferences_save (void) { int preferences_save (void) {
// Note sure if backup has value ? // Note sure if backup has value ?
char backupFilename[FILENAME_MAX+sizeof(preferencesFilename)+10] = {0}; char backupFilename[FILENAME_MAX+sizeof(preferencesFilename)+10] = {0};
PrintAndLogEx(INFO,"Saving preferences ..."); PrintAndLogEx(INFO,"Saving preferences ...");
@ -353,6 +356,7 @@ static int setCmdEmoji (const char *Cmd) {
showEmojiState (prefShowOLD); showEmojiState (prefShowOLD);
session.emoji_mode = newValue; session.emoji_mode = newValue;
showEmojiState (prefShowNEW); showEmojiState (prefShowNEW);
preferences_save ();
} else { } else {
PrintAndLogEx(INFO,"nothing changed"); PrintAndLogEx(INFO,"nothing changed");
showEmojiState (prefShowNone); showEmojiState (prefShowNone);
@ -399,6 +403,7 @@ static int setCmdColor (const char *Cmd)
showColorState (prefShowOLD); showColorState (prefShowOLD);
session.supports_colors = newValue; session.supports_colors = newValue;
showColorState (prefShowNEW); showColorState (prefShowNEW);
preferences_save ();
} else { } else {
PrintAndLogEx(INFO,"nothing changed"); PrintAndLogEx(INFO,"nothing changed");
showColorState (prefShowNone); showColorState (prefShowNone);
@ -450,6 +455,7 @@ static int setCmdDebug (const char *Cmd)
session.client_debug_level = newValue; session.client_debug_level = newValue;
g_debugMode = newValue; g_debugMode = newValue;
showClientDebugState (prefShowNEW); showClientDebugState (prefShowNEW);
preferences_save ();
} else { } else {
PrintAndLogEx(INFO,"nothing changed"); PrintAndLogEx(INFO,"nothing changed");
showClientDebugState (prefShowNone); showClientDebugState (prefShowNone);
@ -496,6 +502,7 @@ static int setCmdHint (const char *Cmd)
showHintsState (prefShowOLD); showHintsState (prefShowOLD);
session.show_hints = newValue; session.show_hints = newValue;
showHintsState (prefShowNEW); showHintsState (prefShowNEW);
preferences_save ();
} else { } else {
PrintAndLogEx(INFO,"nothing changed"); PrintAndLogEx(INFO,"nothing changed");
showHintsState (prefShowNone); showHintsState (prefShowNone);
@ -546,8 +553,8 @@ static int CmdPrefShow (const char *Cmd) {
showEmojiState (prefShowNone); showEmojiState (prefShowNone);
showColorState (prefShowNone); showColorState (prefShowNone);
showPlotPosState (); // showPlotPosState ();
showOverlayPosState (); // showOverlayPosState ();
showClientDebugState(prefShowNone); showClientDebugState(prefShowNone);
showHintsState (prefShowNone); showHintsState (prefShowNone);
@ -555,18 +562,18 @@ static int CmdPrefShow (const char *Cmd) {
return PM3_SUCCESS; return PM3_SUCCESS;
} }
/*
static int CmdPrefSave (const char *Cmd) { static int CmdPrefSave (const char *Cmd) {
preferences_save(); preferences_save();
return PM3_SUCCESS; return PM3_SUCCESS;
} }
*/
static command_t CommandTable[] = { static command_t CommandTable[] = {
{"help", CmdHelp, AlwaysAvailable, "This help"}, {"help", CmdHelp, AlwaysAvailable, "This help"},
{"set", CmdPrefSet, AlwaysAvailable, "Set a preference"}, {"set", CmdPrefSet, AlwaysAvailable, "Set a preference"},
{"show", CmdPrefShow, AlwaysAvailable, "Show preferences"}, {"show", CmdPrefShow, AlwaysAvailable, "Show preferences"},
{"save", CmdPrefSave, AlwaysAvailable, "Save preferences now"}, // {"save", CmdPrefSave, AlwaysAvailable, "Save preferences now"},
{NULL, NULL, NULL, NULL} {NULL, NULL, NULL, NULL}
}; };

View file

@ -28,6 +28,8 @@
#include <QtGui> #include <QtGui>
#include "ui.h" #include "ui.h"
extern "C" int preferences_save (void);
extern "C" { extern "C" {
#include "util_darwin.h" #include "util_darwin.h"
} }
@ -145,11 +147,14 @@ SliderWidget::SliderWidget() {
void SliderWidget::resizeEvent (QResizeEvent *event) { void SliderWidget::resizeEvent (QResizeEvent *event) {
session.window_overlay_hsize = event->size().height(); session.window_overlay_hsize = event->size().height();
session.window_overlay_wsize = event->size().width(); session.window_overlay_wsize = event->size().width();
session.window_changed = true;
} }
void SliderWidget::moveEvent (QMoveEvent *event) { void SliderWidget::moveEvent (QMoveEvent *event) {
session.window_overlay_xpos = event->pos().x(); session.window_overlay_xpos = event->pos().x();
session.window_overlay_ypos = event->pos().y(); session.window_overlay_ypos = event->pos().y();
session.window_changed = true;
} }
//-------------------- //--------------------
@ -246,6 +251,10 @@ ProxWidget::ProxWidget(QWidget *parent, ProxGuiQT *master) : QWidget(parent) {
controlWidget->setWindowTitle(ct); controlWidget->setWindowTitle(ct);
controlWidget->show(); controlWidget->show();
// now that is up, reset pos/size change flags
session.window_changed = false;
} }
// not 100% sure what i need in this block // not 100% sure what i need in this block
@ -268,6 +277,7 @@ ProxWidget::~ProxWidget(void) {
plot = NULL; plot = NULL;
} }
} }
void ProxWidget::closeEvent(QCloseEvent *event) { void ProxWidget::closeEvent(QCloseEvent *event) {
event->ignore(); event->ignore();
this->hide(); this->hide();
@ -284,11 +294,12 @@ void ProxWidget::showEvent(QShowEvent *event) {
void ProxWidget::moveEvent(QMoveEvent *event) { void ProxWidget::moveEvent(QMoveEvent *event) {
session.window_plot_xpos = event->pos().x(); session.window_plot_xpos = event->pos().x();
session.window_plot_ypos = event->pos().y(); session.window_plot_ypos = event->pos().y();
session.window_changed = true;
} }
void ProxWidget::resizeEvent(QResizeEvent *event) { void ProxWidget::resizeEvent(QResizeEvent *event) {
session.window_plot_hsize = event->size().height(); session.window_plot_hsize = event->size().height();
session.window_plot_wsize = event->size().width(); session.window_plot_wsize = event->size().width();
session.window_changed = true;
} }
//----------- Plotting //----------- Plotting

View file

@ -949,7 +949,8 @@ int main(int argc, char *argv[]) {
} }
#ifdef USE_PREFERENCE_FILE #ifdef USE_PREFERENCE_FILE
preferences_save (); if (session.window_changed) // Plot/Overlay moved or resized
preferences_save ();
#endif #endif
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }

View file

@ -30,6 +30,7 @@ typedef struct {
bool pm3_present; bool pm3_present;
bool help_dump_mode; bool help_dump_mode;
bool show_hints; bool show_hints;
bool window_changed; // track if plot/overlay pos/size changed to save on exit
int window_plot_xpos; int window_plot_xpos;
int window_plot_ypos; int window_plot_ypos;
int window_plot_hsize; int window_plot_hsize;