SettingsPageAirspaceWarningsNumPad::SettingsPageAirspaceWarningsNumPad(QWidget *parent) :
  QWidget(parent, Qt::WindowStaysOnTopHint)
{
  setObjectName("SettingsPageAirspaceWarningsNumPad");
  setAttribute( Qt::WA_DeleteOnClose );
  setWindowFlags( Qt::Tool );
  setWindowModality( Qt::WindowModal );
  setWindowTitle(tr("Airspace warning settings"));

  if( MainWindow::mainWindow() )
    {
      // Resize the window to the same size as the main window has. That will
      // completely hide the parent window.
      resize( MainWindow::mainWindow()->size() );
    }

  // save current altitude unit. This unit must be considered during
  // storage. The internal storage is always in meters.
  m_altUnit = Altitude::getUnit();

  QVBoxLayout *topLayout = new QVBoxLayout(this);

  QGroupBox* warningGroup = new QGroupBox(this);
  QHBoxLayout* warningLayout = new QHBoxLayout(warningGroup);

  m_enableWarning = new QCheckBox(tr("Enable Warnings"));
  m_enableWarning->setChecked(true);
  connect( m_enableWarning, SIGNAL(toggled(bool)), SLOT(slot_enabledToggled(bool)));

  warningLayout->addWidget( m_enableWarning );
  topLayout->addWidget( warningGroup );

  m_distanceGroup = new QGroupBox(tr("Distances"), this);
  topLayout->addWidget(m_distanceGroup);

  int row = 0;

  QGridLayout* mVGroupLayout = new QGridLayout(m_distanceGroup);
  mVGroupLayout->setHorizontalSpacing(10);
  mVGroupLayout->setVerticalSpacing(10);
  mVGroupLayout->setRowMinimumHeight ( row++, 8 );

  // row 0
  QLabel* lbl;
  lbl = new QLabel(tr("Lateral"), m_distanceGroup);
  mVGroupLayout->addWidget(lbl, row, 0 );
  lbl = new QLabel(tr("Above"), m_distanceGroup);
  mVGroupLayout->addWidget(lbl, row, 1 );
  lbl = new QLabel(tr("Below"), m_distanceGroup);
  mVGroupLayout->addWidget(lbl, row, 2 );
  row++;

  //row 1
  lbl = new QLabel(tr("Near"), m_distanceGroup);
  mVGroupLayout->addWidget(lbl, row, 3, Qt::AlignLeft|Qt::AlignVCenter);

  m_horiWarnDist = createNumEd( m_distanceGroup );
  mVGroupLayout->addWidget(m_horiWarnDist, row, 0);

  m_aboveWarnDist = createNumEd( m_distanceGroup );
  mVGroupLayout->addWidget(m_aboveWarnDist, row, 1);

  m_belowWarnDist = createNumEd( m_distanceGroup );
  mVGroupLayout->addWidget(m_belowWarnDist, row, 2);
  row++;

  // row 2
  lbl = new QLabel(tr("Very Near"), m_distanceGroup);
  mVGroupLayout->addWidget(lbl, row, 3, Qt::AlignLeft|Qt::AlignVCenter);

  m_horiWarnDistVN = createNumEd( m_distanceGroup );
  mVGroupLayout->addWidget(m_horiWarnDistVN, row, 0);

  m_aboveWarnDistVN = createNumEd( m_distanceGroup );
  mVGroupLayout->addWidget(m_aboveWarnDistVN, row, 1);

  m_belowWarnDistVN = createNumEd( m_distanceGroup );
  mVGroupLayout->addWidget(m_belowWarnDistVN, row, 2);
  row++;

  topLayout->addSpacing(20);
  topLayout->addStretch(10);

  m_defaults = new QPushButton(tr("Default"));

  QDialogButtonBox* buttonBox = new QDialogButtonBox( Qt::Horizontal );
  buttonBox->layout()->setSpacing(30);
  buttonBox->addButton( m_defaults, QDialogButtonBox::ActionRole );
  buttonBox->addButton( QDialogButtonBox::Ok );
  buttonBox->addButton( QDialogButtonBox::Cancel );
  topLayout->addWidget( buttonBox );

  connect(m_defaults, SIGNAL(clicked()), this, SLOT(slot_defaults()));
  connect(buttonBox, SIGNAL(accepted()), this, SLOT(slot_save()));
  connect(buttonBox, SIGNAL(rejected()), this, SLOT(slot_reject()));

  slot_load();
}
Example #2
0
void ThemeBuilderUI::slot_ElementChanged(const QString& element)
{
  if (!config->isValid())
    return;

  slot_save(lastElement);

  lastElement = QString();

  if (element.isEmpty())
    return;

  lastElement = element;

  theme_spec_t tspec = config->getThemeSpec();

  // theme
  authorLineEdit->setText(tspec.author);
  commentLineEdit->setText(tspec.comment);
  animateThemeCb->setChecked(tspec.animated);
  stepSb->setValue(tspec.step);

  element_spec_t espec = config->getElementSpec(element, false);

  // general
  if ( !((QString)espec.inherits).isNull() && !((QString)espec.inherits).isEmpty() )
  {
    inheritElementCb->setChecked(true);
    inheritElementCombo->setCurrentIndex(inheritElementCombo->findText(espec.inherits));
  } else {
    inheritElementCb->setChecked(false);
    inheritElementCombo->setCurrentIndex(-1);
  }

  printf("load %s\n",(const char *)(element.toAscii()));

  if (espec.frame.hasCapsule.present && espec.frame.hasCapsule)
    capsuleCb->setChecked(true);
  else
    capsuleCb->setChecked(false);

  // frame
  if ( !((QString)espec.frame.inherits).isNull() && !((QString)espec.frame.inherits).isEmpty() )
  {
    inheritFrameCb->setChecked(true);
    inheritFrameCombo->setCurrentIndex(inheritFrameCombo->findText(espec.frame.inherits));
  } else {
    inheritFrameCb->setChecked(false);
    inheritFrameCombo->setCurrentIndex(-1);
  }

  frameSvgCombo->clear();
  frameSvgCombo->addItems(svgElements);
  frameCb->setChecked(espec.frame.hasFrame);
  frameSvgCombo->setCurrentIndex(frameSvgCombo->findText(espec.frame.element));

  readInt(frame, Top, top);
  readInt(frame, Bottom, bottom);
  readInt(frame, Left, left);
  readInt(frame, Right, right);

  if (espec.frame.animationFrames.present)
    frameAnimateCb->setChecked(true);
  else
    frameAnimateCb->setChecked(false);

  readInt(frame, Frames, animationFrames);

  // interior
  if ( !((QString)espec.interior.inherits).isNull() && !((QString)espec.interior.inherits).isEmpty() )
  {
    inheritInteriorCb->setChecked(true);
    inheritInteriorCombo->setCurrentIndex(inheritInteriorCombo->findText(espec.interior.inherits));
  } else {
    inheritInteriorCb->setChecked(false);
    inheritInteriorCombo->setCurrentIndex(-1);
  }

  interiorSvgCombo->clear();
  interiorSvgCombo->addItems(svgElements);
  interiorCb->setChecked(espec.interior.hasInterior);
  interiorSvgCombo->setCurrentIndex(interiorSvgCombo->findText(espec.interior.element));

  readInt(interior, Rx, px);
  readInt(interior, Ry, py);

  if (espec.interior.animationFrames.present)
    interiorAnimateCb->setChecked(true);
  else
    interiorAnimateCb->setChecked(false);

  readInt(interior, Frames, animationFrames);

  // indicator
  if ( !((QString)espec.indicator.inherits).isNull() && !((QString)espec.indicator.inherits).isEmpty() )
  {
    inheritIndicatorCb->setChecked(true);
    inheritIndicatorCombo->setCurrentIndex(inheritIndicatorCombo->findText(espec.indicator.inherits));
  } else {
    inheritIndicatorCb->setChecked(false);
    inheritIndicatorCombo->setCurrentIndex(-1);
  }

  indicatorSvgCombo->clear();
  indicatorSvgCombo->addItems(svgElements);
  indicatorSvgCombo->setCurrentIndex(indicatorSvgCombo->findText(espec.indicator.element));

  readInt(indicator, Size, size);

  // text
  readInt(label, ShadowX, xshift);
  readInt(label, ShadowY, yshift);
  readInt(label, ShadowDepth, depth);

  if (espec.label.hasShadow.present && espec.label.hasShadow)
    shadowCb->setChecked(true);
  else
    shadowCb->setChecked(false);

  readInt(label, ShadowRed, r);
  readInt(label, ShadowGreen, g);
  readInt(label, ShadowBlue, b);
  readInt(label, ShadowAlpha, a);

  if (espec.label.hasMargin.present && espec.label.hasMargin)
    textMarginCb->setChecked(true);
  else
    textMarginCb->setChecked(false);

  readInt(label, TextTop, top);
  readInt(label, TextBottom, bottom);
  readInt(label, TextLeft, left);
  readInt(label, TextRight, right);

  readInt(label, TextIconSpacing, tispace);

  // size
  heightSb->setValue(0);
  widthSb->setValue(0);

  if (espec.size.minH.present) {
    heightSb->setValue(espec.size.minH);
    minHeightRadio->setChecked(true);
  }
  if (espec.size.fixedH.present) {
    heightSb->setValue(espec.size.fixedH);
    fixedHeightRadio->setChecked(true);
  }
  if (espec.size.minH.present || espec.size.fixedH.present)
    forceHeightCb->setChecked(true);
  else
    forceHeightCb->setChecked(false);

  if (espec.size.minW.present) {
    widthSb->setValue(espec.size.minW);
    minWidthRadio->setChecked(true);
  }
  if (espec.size.fixedW.present) {
    widthSb->setValue(espec.size.fixedW);
    fixedWidthRadio->setChecked(true);
  }
  if (espec.size.minW.present || espec.size.fixedW.present)
    forceWidthCb->setChecked(true);
    else
      forceWidthCb->setChecked(false);
}
Example #3
0
void ThemeBuilderUI::slot_quit()
{
  slot_save(lastElement);
}
/*
 * Because Maemo 5 is using a special dialog design this window is declared
 * as a tool window.
 */
SettingsPagePointDataLoading::SettingsPagePointDataLoading( QWidget *parent ) :
  QWidget( parent )
{
  setObjectName("SettingsPagePointDataLoading");
  setAttribute( Qt::WA_DeleteOnClose );
  setWindowFlags( Qt::Tool );
  setWindowTitle(tr("Point data loading settings"));
  setWindowModality( Qt::WindowModal );

  if( _globalMainWindow )
    {
      // Resize the window to the same size as the main window has. That will
      // completely hide the parent window.
      resize( _globalMainWindow->size() );
    }

  QStringList mapDirs = GeneralConfig::instance()->getMapDirectories();

  QVBoxLayout *topLayout = new QVBoxLayout( this );
  topLayout->setSpacing(10);

  m_fileTable = new QTableWidget( 0, 1, this );
  m_fileTable->setToolTip( tr("Uncheck All to enable loading of single files.") );
  m_fileTable->setSelectionBehavior( QAbstractItemView::SelectRows );
  m_fileTable->setAlternatingRowColors( true );
  m_fileTable->setShowGrid( true );

  // set new row height from configuration
  int afMargin = GeneralConfig::instance()->getListDisplayAFMargin();
  m_fileTable->setItemDelegate( new RowDelegate( m_fileTable, afMargin ) );

  m_fileTable->setVerticalScrollMode( QAbstractItemView::ScrollPerPixel );
  m_fileTable->setHorizontalScrollMode( QAbstractItemView::ScrollPerPixel );

#ifdef ANDROID
  QScrollBar* lvsb = m_fileTable->verticalScrollBar();
  lvsb->setStyleSheet( Layout::getCbSbStyle() );
#endif

#ifdef QSCROLLER
  QScroller::grabGesture( m_fileTable->viewport(), QScroller::LeftMouseButtonGesture );
#endif

#ifdef QTSCROLLER
  QtScroller::grabGesture( m_fileTable->viewport(), QtScroller::LeftMouseButtonGesture );
#endif

  QString style = "QTableView QTableCornerButton::section { background: gray }";
  m_fileTable->setStyleSheet( style );

  QHeaderView *vHeader = m_fileTable->verticalHeader();
  style = "QHeaderView::section { width: 2em }";
  vHeader->setStyleSheet( style );

  connect( m_fileTable, SIGNAL(cellClicked ( int, int )),
           SLOT(slot_toggleCheckBox( int, int )) );

  connect( m_fileTable, SIGNAL(itemSelectionChanged()),
           this, SLOT(slot_itemSelectionChanged()) );

  QHeaderView* hHeader = m_fileTable->horizontalHeader();
  hHeader->setStretchLastSection( true );

  QString loadDirs;

  for( int i = 0; i < mapDirs.size(); i++ )
    {
      if( i > 0 )
        {
          loadDirs.append("\n");
        }

      loadDirs += mapDirs.at(i) + "/points";
    }

  QTableWidgetItem *item = new QTableWidgetItem( loadDirs );
  item->setTextAlignment( Qt::AlignLeft );
  m_fileTable->setHorizontalHeaderItem( 0, item );

  topLayout->addWidget( m_fileTable, 10 );

  int buttonSize = Layout::getButtonSize();
  int iconSize   = buttonSize - 5;

  m_delButton = new QPushButton;
  m_delButton->setIcon( QIcon( GeneralConfig::instance()->loadPixmap( "delete.png" ) ) );
  m_delButton->setIconSize(QSize(iconSize, iconSize));
  m_delButton->setMinimumSize(buttonSize, buttonSize);
  m_delButton->setMaximumSize(buttonSize, buttonSize);
  m_delButton->setEnabled( false );

  QPushButton *okButton = new QPushButton;
  okButton->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("ok.png")));
  okButton->setIconSize(QSize(iconSize, iconSize));
  okButton->setMinimumSize(buttonSize, buttonSize);
  okButton->setMaximumSize(buttonSize, buttonSize);

  QPushButton *cancelButton = new QPushButton;
  cancelButton->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("cancel.png")));
  cancelButton->setIconSize(QSize(iconSize, iconSize));
  cancelButton->setMinimumSize(buttonSize, buttonSize);
  cancelButton->setMaximumSize(buttonSize, buttonSize);

  connect( m_delButton, SIGNAL(clicked() ), this, SLOT(slot_DeleteRows()) );
  connect( okButton, SIGNAL(clicked() ), this, SLOT(slot_save()) );
  connect( cancelButton, SIGNAL(clicked() ), this, SLOT(close()) );

  // box with operator buttons
  QHBoxLayout *buttonBox = new QHBoxLayout;

  buttonBox->setSpacing(0);
  buttonBox->addWidget( m_delButton );
  buttonBox->addStretch(2);
  buttonBox->addWidget( cancelButton );
  buttonBox->addSpacing(32);
  buttonBox->addWidget( okButton );
  topLayout->addLayout( buttonBox );

  //---------------------------------------------------------------------------
  // Load table with POI files
  QStringList preselect;

  for ( int i = 0; i < mapDirs.size(); ++i )
    {
      MapContents::addDir(preselect, mapDirs.at(i) + "/points", "*_wpt.aip");
      MapContents::addDir(preselect, mapDirs.at(i) + "/points", "*_nav.aip");
      MapContents::addDir(preselect, mapDirs.at(i) + "/points", "*_hot.aip");
    }

  preselect.sort();

  int row = 0;
  m_fileTable->setRowCount( row + 1 );

  item = new QTableWidgetItem( tr("Check or Uncheck all"), 0 );
  item->setFlags( Qt::ItemIsEnabled );
  item->setCheckState( Qt::Unchecked );
  m_fileTable->setItem( row, 0, item );
  row++;

  for( int i = 0; i < preselect.size(); i++ )
    {
      m_fileTable->setRowCount( row + 1 );

      QString file = QFileInfo( preselect.at(i) ).fileName();
      item = new QTableWidgetItem( file, row );
      item->setFlags( Qt::ItemIsEnabled|Qt::ItemIsSelectable );
      item->setData( Qt::UserRole, preselect.at(i) );
      item->setCheckState( Qt::Unchecked );
      m_fileTable->setItem( row, 0, item );
      row++;
    }

  QStringList& files = GeneralConfig::instance()->getOpenAipPoiFileList();

  if( files.isEmpty() )
    {
      return;
    }

  if( files.at(0) == "All" )
    {
      // Set all items to checked, if All is contained in the list at the first
      // position.
      for( int i = 0; i < m_fileTable->rowCount(); i++ )
        {
          m_fileTable->item( i, 0 )->setCheckState( Qt::Checked );
        }
    }
  else
    {
      // Set the All item to unchecked.
      m_fileTable->item( 0, 0 )->setCheckState( Qt::Unchecked );

      for( int i = 1; i < m_fileTable->rowCount(); i++ )
        {
          QTableWidgetItem* item = m_fileTable->item( i, 0 );

          if( files.contains( item->text()) )
            {
              m_fileTable->item( i, 0 )->setCheckState( Qt::Checked );
            }
          else
            {
              m_fileTable->item( i, 0 )->setCheckState( Qt::Unchecked );
            }
        }
    }

  m_fileTable->resizeColumnsToContents();
  m_fileTable->resizeRowsToContents();
}