Changeset - 6254c449bb19
[Not reviewed]
Hasan Yavuz Ă–ZDERYA - 9 years ago 2017-01-02 03:26:52
hy@ozderya.net
save/load all known channel info
4 files changed with 62 insertions and 19 deletions:
0 comments (0 inline, 0 general)
src/channelinfomodel.cpp
Show inline comments
 
@@ -18,6 +18,7 @@
 
*/
 

	
 
#include "channelinfomodel.h"
 
#include "setting_defines.h"
 

	
 
const QColor colors[8] =
 
{
 
@@ -210,3 +211,55 @@ void ChannelInfoModel::setNumOfChannels(
 
        endRemoveRows();
 
    }
 
}
 

	
 
void ChannelInfoModel::saveSettings(QSettings* settings)
 
{
 
    settings->beginGroup(SettingGroup_Channels);
 
    settings->beginWriteArray(SG_Channels_Channel);
 

	
 
    // save all channel information regardless of current number of channels
 
    for (unsigned ci = 0; (int) ci < infos.length(); ci++)
 
    {
 
        settings->setArrayIndex(ci);
 
        settings->setValue(SG_Channels_Name, infos[ci].name);
 
        settings->setValue(SG_Channels_Color, infos[ci].color);
 
        settings->setValue(SG_Channels_Visible, infos[ci].visibility);
 
    }
 

	
 
    settings->endArray();
 
    settings->endGroup();
 
}
 

	
 
void ChannelInfoModel::loadSettings(QSettings* settings)
 
{
 
    settings->beginGroup(SettingGroup_Channels);
 
    unsigned size = settings->beginReadArray(SG_Channels_Channel);
 

	
 
    for (unsigned ci = 0; ci < size; ci++)
 
    {
 
        settings->setArrayIndex(ci);
 

	
 
        ChannelInfo chanInfo;
 
        chanInfo.name       = settings->value(SG_Channels_Name,
 
                                              QString(tr("Channel %1")).arg(ci+1)).toString();
 
        chanInfo.color      = settings->value(SG_Channels_Color, colors[ci % 8]).value<QColor>();
 
        chanInfo.visibility = settings->value(SG_Channels_Visible, true).toBool();
 

	
 
        if ((int) ci >= infos.size())
 
        {
 
            infos.append(chanInfo);
 
        }
 
        else
 
        {
 
            infos[ci] = chanInfo;
 

	
 
            auto roles = QVector<int>({
 
                    Qt::DisplayRole, Qt::EditRole, Qt::ForegroundRole, Qt::CheckStateRole});
 

	
 
            emit dataChanged(index(ci, 0), index(ci, COLUMN_COUNT-1), roles);
 
        }
 
    }
 

	
 
    settings->endArray();
 
    settings->endGroup();
 
}
src/channelinfomodel.h
Show inline comments
 
@@ -22,6 +22,7 @@
 

	
 
#include <QAbstractTableModel>
 
#include <QColor>
 
#include <QSettings>
 

	
 
class ChannelInfoModel : public QAbstractTableModel
 
{
 
@@ -46,6 +47,10 @@ public:
 
    QVariant      headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
 

	
 
    void setNumOfChannels(unsigned number);
 
    /// Stores all channel info into a `QSettings`
 
    void saveSettings(QSettings* settings);
 
    /// Loads all channel info from a `QSettings`.
 
    void loadSettings(QSettings* settings);
 

	
 
private:
 
    struct ChannelInfo
src/channelmanager.cpp
Show inline comments
 
@@ -169,27 +169,10 @@ void ChannelManager::addChannelData(unsi
 

	
 
void ChannelManager::saveSettings(QSettings* settings)
 
{
 
    settings->beginGroup(SettingGroup_Channels);
 
    settings->beginWriteArray(SG_Channels_Channel);
 
    for (unsigned i = 0; i < numOfChannels(); i++)
 
    {
 
        settings->setArrayIndex(i);
 
        settings->setValue(SG_Channels_Name, channelName(i));
 
    }
 
    settings->endArray();
 
    settings->endGroup();
 
    _infoModel.saveSettings(settings);
 
}
 

	
 
void ChannelManager::loadSettings(QSettings* settings)
 
{
 
    settings->beginGroup(SettingGroup_Channels);
 
    settings->beginReadArray(SG_Channels_Channel);
 
    for (unsigned i = 0; i < numOfChannels(); i++)
 
    {
 
        settings->setArrayIndex(i);
 
        // TODO: fix load settings
 
        // setChannelName(i, settings->value(SG_Channels_Name, channelName(i)).toString());
 
    }
 
    settings->endArray();
 
    settings->endGroup();
 
    _infoModel.loadSettings(settings);
 
}
src/setting_defines.h
Show inline comments
 
@@ -70,6 +70,8 @@ const char SG_CustomFrame_DebugMode[] = 
 
// channel manager keys
 
const char SG_Channels_Channel[] = "channel";
 
const char SG_Channels_Name[] = "name";
 
const char SG_Channels_Color[] = "color";
 
const char SG_Channels_Visible[] = "visible";
 

	
 
// plot settings keys
 
const char SG_Plot_NumOfSamples[] = "numOfSamples";
0 comments (0 inline, 0 general)