QTfrontend/util/DataManager.cpp
changeset 14848 bb412d8e435f
parent 14532 e1ae6d8e84b0
child 14850 63b469639c64
equal deleted inserted replaced
14847:eef1f76150fe 14848:bb412d8e435f
    26 #include <QStandardItemModel>
    26 #include <QStandardItemModel>
    27 #include <QFileInfo>
    27 #include <QFileInfo>
    28 #include <QSettings>
    28 #include <QSettings>
    29 #include <QColor>
    29 #include <QColor>
    30 
    30 
       
    31 #include <SDL2/SDL.h>
       
    32 
    31 #include "hwconsts.h"
    33 #include "hwconsts.h"
    32 #include "HWApplication.h"
    34 #include "HWApplication.h"
    33 #include "sdlkeys.h"
    35 #include "sdlkeys.h"
       
    36 #include "KeyMap.h"
    34 #include "physfs.h"
    37 #include "physfs.h"
    35 
    38 
    36 #include "DataManager.h"
    39 #include "DataManager.h"
    37 
    40 
    38 #include "GameStyleModel.h"
    41 #include "GameStyleModel.h"
   145     return m_colorsModel;
   148     return m_colorsModel;
   146 }
   149 }
   147 
   150 
   148 QStandardItemModel * DataManager::bindsModel()
   151 QStandardItemModel * DataManager::bindsModel()
   149 {
   152 {
       
   153     KeyMap km = KeyMap::instance();
   150     if(m_bindsModel == NULL)
   154     if(m_bindsModel == NULL)
   151     {
   155     {
   152         m_bindsModel = new QStandardItemModel();
   156         m_bindsModel = new QStandardItemModel();
   153 
   157 
   154         QStandardItem * firstItem = new QStandardItem();
   158         QStandardItem * firstItem = new QStandardItem();
   158 
   162 
   159         for(int j = 0; sdlkeys[j][1][0] != '\0'; j++)
   163         for(int j = 0; sdlkeys[j][1][0] != '\0'; j++)
   160         {
   164         {
   161             QStandardItem * item = new QStandardItem();
   165             QStandardItem * item = new QStandardItem();
   162             QString keyId = QString(sdlkeys[j][0]);
   166             QString keyId = QString(sdlkeys[j][0]);
   163             QString keyTr = HWApplication::translate("binds (keys)", sdlkeys[j][1]);
   167             QString keyDisplay;
   164             item->setData((keyId == "none" || keyTr.contains(": ")) ? keyTr : HWApplication::translate("binds (keys)", "Keyboard") + QString(": ") + keyTr, Qt::DisplayRole);
   168             bool isKeyboard = !QString(sdlkeys[j][1]).contains(": ");
       
   169             if (keyId == "none" || (!isKeyboard))
       
   170                 keyDisplay = HWApplication::translate("binds (keys)", sdlkeys[j][1]);
       
   171             else
       
   172                 // Get key name with respect to keyboard layout
       
   173                 keyDisplay = QString(SDL_GetKeyName(SDL_GetKeyFromScancode(km.getScancodeFromKeyname(sdlkeys[j][0]))));
       
   174 
       
   175             bool kbFallback = keyDisplay.trimmed().isEmpty();
       
   176             if (kbFallback)
       
   177             {
       
   178                 // If SDL doesn't know a name, show fallback enclosed in brackets
       
   179                 keyDisplay = QString(sdlkeys[j][1]) + QString(" ") + HWApplication::translate("binds (keys)", "(unsupported)");
       
   180             }
       
   181             if (isKeyboard)
       
   182             {
       
   183                 if (!kbFallback)
       
   184                     keyDisplay = HWApplication::translate("binds (keys)", keyDisplay.toUtf8().constData());
       
   185                 keyDisplay = HWApplication::translate("binds (keys)", "Keyboard") + QString(": ") + keyDisplay;
       
   186             }
       
   187             item->setData(keyDisplay, Qt::DisplayRole);
   165             item->setData(sdlkeys[j][0], Qt::UserRole + 1);
   188             item->setData(sdlkeys[j][0], Qt::UserRole + 1);
   166             m_bindsModel->appendRow(item);
   189             m_bindsModel->appendRow(item);
   167         }
   190         }
   168     }
   191     }
   169 
   192