summaryrefslogtreecommitdiffstats
path: root/ui/qt/models/pref_models.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ui/qt/models/pref_models.cpp')
-rw-r--r--ui/qt/models/pref_models.cpp103
1 files changed, 84 insertions, 19 deletions
diff --git a/ui/qt/models/pref_models.cpp b/ui/qt/models/pref_models.cpp
index b86230f0..3480a8db 100644
--- a/ui/qt/models/pref_models.cpp
+++ b/ui/qt/models/pref_models.cpp
@@ -23,10 +23,10 @@
#include <QApplication>
// XXX Should we move this to ui/preference_utils?
-static GHashTable * pref_ptr_to_pref_ = NULL;
+static GHashTable * pref_ptr_to_pref_;
pref_t *prefFromPrefPtr(void *pref_ptr)
{
- return (pref_t *)g_hash_table_lookup(pref_ptr_to_pref_, (gpointer) pref_ptr);
+ return (pref_t *)g_hash_table_lookup(pref_ptr_to_pref_, (void *) pref_ptr);
}
static void prefInsertPrefPtr(void * pref_ptr, pref_t * pref)
@@ -34,8 +34,8 @@ static void prefInsertPrefPtr(void * pref_ptr, pref_t * pref)
if (! pref_ptr_to_pref_)
pref_ptr_to_pref_ = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL);
- gpointer key = (gpointer) pref_ptr;
- gpointer val = (gpointer) pref;
+ void *key = (void *) pref_ptr;
+ void *val = (void *) pref;
/* Already existing entries will be ignored */
if ((void *)g_hash_table_lookup(pref_ptr_to_pref_, key) == NULL)
@@ -47,6 +47,7 @@ PrefsItem::PrefsItem(module_t *module, pref_t *pref, PrefsItem* parent)
pref_(pref),
module_(module),
name_(module->name ? module->name : module->parent->name),
+ help_(QString()),
changed_(false)
{
if (pref_ != NULL) {
@@ -59,9 +60,19 @@ PrefsItem::PrefsItem(const QString name, PrefsItem* parent)
pref_(NULL),
module_(NULL),
name_(name),
+ help_(QString()),
changed_(false)
{
+}
+PrefsItem::PrefsItem(PrefsModel::PrefsModelType type, PrefsItem* parent)
+ : ModelHelperTreeItem<PrefsItem>(parent),
+ pref_(NULL),
+ module_(NULL),
+ name_(PrefsModel::typeToString(type)),
+ help_(PrefsModel::typeToHelp(type)),
+ changed_(false)
+{
}
PrefsItem::~PrefsItem()
@@ -113,6 +124,20 @@ QString PrefsItem::getModuleTitle() const
return QString(module_->title);
}
+QString PrefsItem::getModuleHelp() const
+{
+ if (module_ == nullptr)
+ return help_;
+
+ module_t *pref_module = module_;
+
+ while (pref_module->help == nullptr && pref_module->parent) {
+ pref_module = pref_module->parent;
+ }
+
+ return pref_module->help;
+}
+
void PrefsItem::setChanged(bool changed)
{
changed_ = changed;
@@ -232,8 +257,8 @@ QVariant PrefsModel::data(const QModelIndex &index, int role) const
return QVariant();
}
-static guint
-fill_prefs(module_t *module, gpointer root_ptr)
+static unsigned
+fill_prefs(module_t *module, void *root_ptr)
{
PrefsItem* root_item = static_cast<PrefsItem*>(root_ptr);
@@ -275,32 +300,32 @@ fill_prefs(module_t *module, gpointer root_ptr)
void PrefsModel::populate()
{
- prefs_modules_foreach_submodules(NULL, fill_prefs, (gpointer)root_);
+ prefs_modules_foreach_submodules(NULL, fill_prefs, (void *)root_);
//Add the "specially handled" preferences
PrefsItem *appearance_item, *appearance_subitem, *special_item;
- appearance_item = new PrefsItem(typeToString(PrefsModel::Appearance), root_);
+ appearance_item = new PrefsItem(PrefsModel::Appearance, root_);
root_->prependChild(appearance_item);
- appearance_subitem = new PrefsItem(typeToString(PrefsModel::Layout), appearance_item);
+ appearance_subitem = new PrefsItem(PrefsModel::Layout, appearance_item);
appearance_item->prependChild(appearance_subitem);
- appearance_subitem = new PrefsItem(typeToString(PrefsModel::Columns), appearance_item);
+ appearance_subitem = new PrefsItem(PrefsModel::Columns, appearance_item);
appearance_item->prependChild(appearance_subitem);
- appearance_subitem = new PrefsItem(typeToString(PrefsModel::FontAndColors), appearance_item);
+ appearance_subitem = new PrefsItem(PrefsModel::FontAndColors, appearance_item);
appearance_item->prependChild(appearance_subitem);
- special_item = new PrefsItem(typeToString(PrefsModel::Capture), root_);
+ special_item = new PrefsItem(PrefsModel::Capture, root_);
root_->prependChild(special_item);
- special_item = new PrefsItem(typeToString(PrefsModel::Expert), root_);
+ special_item = new PrefsItem(PrefsModel::Expert, root_);
root_->prependChild(special_item);
- special_item = new PrefsItem(typeToString(PrefsModel::FilterButtons), root_);
+ special_item = new PrefsItem(PrefsModel::FilterButtons, root_);
root_->prependChild(special_item);
#ifdef HAVE_LIBGNUTLS
- special_item = new PrefsItem(typeToString(PrefsModel::RSAKeys), root_);
+ special_item = new PrefsItem(PrefsModel::RSAKeys, root_);
root_->prependChild(special_item);
#endif
- special_item = new PrefsItem(typeToString(PrefsModel::Advanced), root_);
+ special_item = new PrefsItem(PrefsModel::Advanced, root_);
root_->prependChild(special_item);
}
@@ -324,6 +349,44 @@ QString PrefsModel::typeToString(int type)
return typeStr;
}
+QString PrefsModel::typeToHelp(int type)
+{
+ QString helpStr;
+
+ switch(type)
+ {
+ case Appearance:
+ helpStr = QString("ChCustPreferencesSection.html#_appearance");
+ break;
+ case Columns:
+ helpStr = QString("ChCustPreferencesSection.html#_columns");
+ break;
+ case FontAndColors:
+ helpStr = QString("ChCustPreferencesSection.html#_font_and_colors");
+ break;
+ case Layout:
+ helpStr = QString("ChCustPreferencesSection.html#_layout");
+ break;
+ case Capture:
+ helpStr = QString("ChCustPreferencesSection.html#_capture");
+ break;
+ case Expert:
+ helpStr = QString("ChCustPreferencesSection.html#ChCustPrefsExpertSection");
+ break;
+ case FilterButtons:
+ helpStr = QString("ChCustPreferencesSection.html#ChCustFilterButtons");
+ break;
+ case RSAKeys:
+ helpStr = QString("ChCustPreferencesSection.html#ChCustPrefsRSASection");
+ break;
+ case Advanced:
+ helpStr = QString("ChCustPreferencesSection.html#_advanced");
+ break;
+ }
+
+ return helpStr;
+}
+
AdvancedPrefsModel::AdvancedPrefsModel(QObject * parent)
: QSortFilterProxyModel(parent),
filter_(),
@@ -470,11 +533,10 @@ bool AdvancedPrefsModel::setData(const QModelIndex &dataindex, const QVariant &v
item->setChanged(true);
switch (item->getPrefType())
{
- case PREF_DECODE_AS_UINT:
case PREF_UINT:
{
bool ok;
- guint new_val = value.toString().toUInt(&ok, prefs_get_uint_base(item->getPref()));
+ unsigned new_val = value.toString().toUInt(&ok, prefs_get_uint_base(item->getPref()));
if (ok)
prefs_set_uint_value(item->getPref(), new_val, pref_stashed);
@@ -487,6 +549,7 @@ bool AdvancedPrefsModel::setData(const QModelIndex &dataindex, const QVariant &v
prefs_set_enum_value(item->getPref(), value.toInt(), pref_stashed);
break;
case PREF_STRING:
+ case PREF_DISSECTOR:
prefs_set_string_value(item->getPref(), value.toString().toStdString().c_str(), pref_stashed);
break;
case PREF_PASSWORD:
@@ -543,7 +606,7 @@ Qt::ItemFlags AdvancedPrefsModel::flags(const QModelIndex &index) const
Qt::ItemFlags flags = QAbstractItemModel::flags(index);
if (item->getPref() == NULL) {
- /* Base modules aren't changable */
+ /* Base modules aren't changeable */
flags &= ~(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
} else {
flags |= Qt::ItemIsEditable;
@@ -683,6 +746,8 @@ QVariant ModulePrefsModel::data(const QModelIndex &dataindex, int role) const
return sourceModel()->data(modelIndex, role);
case ModuleName:
return item->getModuleName();
+ case ModuleHelp:
+ return item->getModuleHelp();
default:
break;
}