/*
* Copyright 2009 Dirk Wallenstein
*
* This file is part of Duttulm
*
* Duttulm is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Duttulm is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Duttulm. If not, see <http://www.gnu.org/licenses/>.
*/
#include "DuttKeycode.hpp"
#include "XmlLoadSave.hpp"
namespace {
const DuttKeycode::DuttKeycodeValue_t invalidDuttKeycodeValue( 0 ) ;
}
DuttKeycode::
DuttKeycode() :
XmlAbleContainerElement() ,
keycode_m( invalidDuttKeycodeValue )
{
}
DuttKeycode::
DuttKeycode(
int v
) :
XmlAbleContainerElement() ,
keycode_m( v )
{
errorIfNotWithinReservedRange() ;
}
DuttKeycode::
DuttKeycode(
unsigned int v
) :
XmlAbleContainerElement() ,
keycode_m( v )
{
errorIfNotWithinReservedRange() ;
Q_ASSERT( v <= MaxReservedDuttKeycode ) ;
}
DuttKeycode &
DuttKeycode::
operator = (
const DuttKeycode & other
) {
if ( this != &other ) {
clearContainerKey() ;
keycode_m = other.keycode_m ;
errorIfNotWithinReservedRange() ;
}
return *this ;
}
DuttKeycode &
DuttKeycode::
operator = (
DuttKeycodeValue_t v
) {
clearContainerKey() ;
keycode_m = v ;
errorIfNotWithinReservedRange() ;
return *this ;
}
bool
DuttKeycode::
isValid() const {
if ( keycode_m >= MinValidDuttKeycode
&& keycode_m <= MaxValidDuttKeycode )
{
return true ;
}
return false ;
}
bool
DuttKeycode::
errorIfNotWithinReservedRange() const {
if ( keycode_m >= MinReservedDuttKeycode
&& keycode_m <= MaxReservedDuttKeycode )
{
return true ;
}
metaException__( QString( "%1: Keycode(%2) is not within the reserved range(%3:%4) "
" which is a bit wider than the valid range(%5:%6)" )
.arg( __func__ )
.arg( keycode_m )
.arg( MinReservedDuttKeycode )
.arg( MaxReservedDuttKeycode )
.arg( MinValidDuttKeycode )
.arg( MaxValidDuttKeycode )
) ;
return false ;
}
DuttKeycode::DuttKeycodeValue_t
DuttKeycode::
value() const {
return keycode_m ;
}
void
DuttKeycode::
setValue(
const DuttKeycodeValue_t keycode
) {
keycode_m = keycode ;
errorIfNotWithinReservedRange() ;
}
void
DuttKeycode::
clear() {
keycode_m = invalidDuttKeycodeValue ;
Q_ASSERT( ! isValid() ) ;
}