int main (int argc, char *argv[]) { QApplication app(argc, argv); QAnalogCommand command; QWidget mainWidget; TestValue test; QVBoxLayout mainLayout(&mainWidget); mainLayout.addWidget(&command); mainLayout.addWidget(&test); QObject::connect( &command, SIGNAL(increment(int)), &test, SLOT(increment(int)) ); QObject::connect( &command, SIGNAL(decrement(int)), &test, SLOT(decrement(int)) ); mainWidget.show(); return app.exec(); }
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) { QWidget* w(new QWidget(this)); setCentralWidget(w); QVBoxLayout* mainLayout(new QVBoxLayout(w)); mainLayout->setAlignment(Qt::AlignRight); sm::LineEdit* le(new sm::LineEdit(w)); le->show(); mainLayout->addWidget(le); sm::LineEdit* le1( new sm::LineEdit(sm::LineEdit::Ctrl::Exam, tr("Enter first name"), w)); le1->SetRegExpr(QString("[a-z]")); le1->show(); mainLayout->addWidget(le1); sm::LineEdit* le2( new sm::LineEdit(sm::LineEdit::Ctrl::Pwd, tr("Password"), w)); le2->show(); mainLayout->addWidget(le2); sm::LineEdit* le3( new sm::LineEdit(sm::LineEdit::Ctrl::ExamAndPwd, tr("Password"), w)); le3->SetRegExpr(QString("")); le3->show(); mainLayout->addWidget(le3); centralWidget()->setLayout(mainLayout); }
QWidget* KexiPropertyPaneViewBase::addWidgetSpacer() { QWidget *sp = new QWidget(this); sp->setFixedHeight(spacing()); sp->setContentsMargins(0, 0, 0, 0); mainLayout()->addWidget(sp); return sp; }
bool Hdd::addVisualization(const QString& source) { Plasma::Meter *w; Plasma::DataEngine *engine = dataEngine("soliddevice"); Plasma::DataEngine::Data data; if (!engine) { return false; } if (!isValidDevice(source, &data)) { // do not try to show hard drives and swap partitions. return false; } QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Horizontal); layout->setContentsMargins(3, 3, 3, 3); layout->setSpacing(5); w = new Plasma::Meter(this); w->setMeterType(Plasma::Meter::BarMeterHorizontal); if (mode() != SM::Applet::Panel) { MonitorIcon *icon = new MonitorIcon(this); m_icons.insert(source, icon); icon->setImage("drive-harddisk"); if (data["Accessible"].toBool()) { QStringList overlays; overlays << QString("emblem-mounted"); icon->setOverlays(overlays); } layout->addItem(icon); } else { w->setSvg("system-monitor/hdd_panel"); } w->setLabel(0, hddTitle(source, data)); w->setLabelAlignment(0, Qt::AlignVCenter | Qt::AlignLeft); w->setLabelAlignment(1, Qt::AlignVCenter | Qt::AlignRight); w->setLabelAlignment(2, Qt::AlignVCenter | Qt::AlignCenter); w->setMaximum(data["Size"].toULongLong() / (1024 * 1024)); applyTheme(w); appendVisualization(source, w); layout->addItem(w); mainLayout()->addItem(layout); dataUpdated(source, data); setPreferredItemHeight(layout->preferredSize().height()); QString disk = data["Parent UDI"].toString(); m_diskMap[disk] << w; if (!connectedSources().contains(disk)) { data = engine->query(disk); dataUpdated(disk, data); connectSource(disk); } return true; }
TabSwitcherWidget::TabSwitcherWidget(MainWindow *parent) : QWidget(parent), m_mainWindow(parent), m_model(new QStandardItemModel(this)), m_tabsView(new ItemViewWidget(this)), m_previewLabel(new QLabel(this)), m_spinnerAnimation(nullptr), m_reason(KeyboardReason), m_isIgnoringMinimizedTabs(SettingsManager::getOption(SettingsManager::TabSwitcher_IgnoreMinimizedTabsOption).toBool()) { QFrame *frame(new QFrame(this)); QHBoxLayout *mainLayout(new QHBoxLayout(this)); mainLayout->addWidget(frame, 0, Qt::AlignCenter); setLayout(mainLayout); setAutoFillBackground(false); QHBoxLayout *frameLayout(new QHBoxLayout(frame)); frameLayout->addWidget(m_tabsView, 1); frameLayout->addWidget(m_previewLabel, 0, Qt::AlignCenter); m_model->setSortRole(OrderRole); frame->setLayout(frameLayout); frame->setAutoFillBackground(true); frame->setMinimumWidth(600); frame->setObjectName(QLatin1String("tabSwitcher")); frame->setStyleSheet(QStringLiteral("#tabSwitcher {background:%1;border:1px solid #B3B3B3;border-radius:4px;}").arg(palette().color(QPalette::Base).name())); m_tabsView->setModel(m_model); m_tabsView->setStyleSheet(QLatin1String("border:0;")); m_tabsView->header()->hide(); m_tabsView->header()->setStretchLastSection(true); m_tabsView->viewport()->installEventFilter(this); m_previewLabel->setFixedSize(260, 170); m_previewLabel->setAlignment(Qt::AlignCenter); m_previewLabel->setStyleSheet(QLatin1String("border:1px solid gray;")); connect(m_tabsView, &ItemViewWidget::clicked, this, &TabSwitcherWidget::handleIndexClicked); connect(m_tabsView->selectionModel(), &QItemSelectionModel::currentChanged, this, &TabSwitcherWidget::handleCurrentTabChanged); }
TabSwitcherWidget::TabSwitcherWidget(WindowsManager *manager, QWidget *parent) : QWidget(parent), m_windowsManager(manager), m_model(new QStandardItemModel(this)), m_frame(new QFrame(this)), m_tabsView(new ItemViewWidget(m_frame)), m_previewLabel(new QLabel(m_frame)), m_loadingMovie(nullptr), m_reason(KeyboardReason) { QHBoxLayout *mainLayout(new QHBoxLayout(this)); mainLayout->addWidget(m_frame, 0, Qt::AlignCenter); setLayout(mainLayout); setAutoFillBackground(false); QHBoxLayout *frameLayout(new QHBoxLayout(m_frame)); frameLayout->addWidget(m_tabsView, 1); frameLayout->addWidget(m_previewLabel, 0, Qt::AlignCenter); m_model->setSortRole(Qt::UserRole); m_frame->setLayout(frameLayout); m_frame->setAutoFillBackground(true); m_frame->setMinimumWidth(600); m_frame->setObjectName(QLatin1String("tabSwitcher")); m_frame->setStyleSheet(QStringLiteral("#tabSwitcher {background:%1;border:1px solid #B3B3B3;border-radius:4px;}").arg(palette().color(QPalette::Base).name())); m_tabsView->setModel(m_model); m_tabsView->setStyleSheet(QLatin1String("border:0;")); m_tabsView->header()->hide(); m_tabsView->header()->setStretchLastSection(true); m_tabsView->viewport()->installEventFilter(this); m_previewLabel->setFixedSize(260, 170); m_previewLabel->setAlignment(Qt::AlignCenter); m_previewLabel->setStyleSheet(QLatin1String("border:1px solid gray;")); connect(m_tabsView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(currentTabChanged(QModelIndex))); }
void UIFileManagerOptionsPanel::prepareWidgets() { if (!mainLayout()) return; m_pListDirectoriesOnTopCheckBox = new QCheckBox; if (m_pListDirectoriesOnTopCheckBox) mainLayout()->addWidget(m_pListDirectoriesOnTopCheckBox, 0, Qt::AlignLeft); m_pDeleteConfirmationCheckBox = new QCheckBox; if (m_pDeleteConfirmationCheckBox) mainLayout()->addWidget(m_pDeleteConfirmationCheckBox, 0, Qt::AlignLeft); m_pHumanReabableSizesCheckBox = new QCheckBox; if (m_pHumanReabableSizesCheckBox) mainLayout()->addWidget(m_pHumanReabableSizesCheckBox, 0, Qt::AlignLeft); m_pShowHiddenObjectsCheckBox = new QCheckBox; if (m_pShowHiddenObjectsCheckBox) mainLayout()->addWidget(m_pShowHiddenObjectsCheckBox, 0, Qt::AlignLeft); /* Set initial checkbox status wrt. options: */ if (m_pFileManagerOptions) { if (m_pListDirectoriesOnTopCheckBox) m_pListDirectoriesOnTopCheckBox->setChecked(m_pFileManagerOptions->fListDirectoriesOnTop); if (m_pDeleteConfirmationCheckBox) m_pDeleteConfirmationCheckBox->setChecked(m_pFileManagerOptions->fAskDeleteConfirmation); if (m_pHumanReabableSizesCheckBox) m_pHumanReabableSizesCheckBox->setChecked(m_pFileManagerOptions->fShowHumanReadableSizes); if (m_pShowHiddenObjectsCheckBox) m_pShowHiddenObjectsCheckBox->setChecked(m_pFileManagerOptions->fShowHiddenObjects); } retranslateUi(); mainLayout()->addStretch(2); }
Controller::Controller(sf::Window &theWindow, sfg::Desktop &theDesktop, CallbackSystem &callbackSystem): desktop(theDesktop), boardWindow(sfg::Window::Create(sfg::Window::BACKGROUND)), settingsButton(sfg::Button::Create("Settings")), canvas(theWindow), m_whiteClock(Clock::Create()), m_blackClock(Clock::Create()), settingsWindow(desktop), premove({{0,0},{0,0}}), premoveOn(false), netWindow(m_currentEvent), player1(sfg::Label::Create()), player2(sfg::Label::Create()) { boardWindow->SetRequisition(static_cast<sf::Vector2f>(theWindow.getSize())); canvas.requestMove.connect(boost::bind(&Controller::requestMove, this,_1)); settingsWindow.settingsDone.connect([this](const PieceToTexPos& pieceToTexPos){ settingsWindow.enable(false); canvas.setPieceColors(pieceToTexPos); }); messages.connect(Messages::ID::TextReady, [this](const Messages::Message& message){ auto received = boost::polymorphic_downcast<const Messages::TextReady*>(&message); netWindow.addLine(received->text); }); ButtonBox buttons; buttons.flip->GetSignal(sfg::Button::OnLeftClick).Connect(std::bind(&Canvas::flipBoard, &canvas)); buttons.settings->GetSignal(sfg::Button::OnLeftClick).Connect([]{ //settingsWindow.enable(true); }); buttons.resign->GetSignal(sfg::Button::OnLeftClick).Connect([this]{ messages.triggerEvent(Messages::TextToClient("resign")); }); buttons.draw->GetSignal(sfg::Button::OnLeftClick).Connect([this]{ messages.triggerEvent(Messages::TextToClient("draw")); }); auto promotionLayout = sfg::Box::Create(sfg::Box::Orientation::VERTICAL); auto promotionGroup = sfg::RadioButtonGroup::Create(); auto createPromotionButton = [this, promotionGroup, promotionLayout](const std::string& name, char letter){ auto promotionButton = sfg::RadioButton::Create(name, promotionGroup); promotionLayout->Pack(promotionButton); promotionButton->GetSignal(sfg::ToggleButton::OnToggle).Connect([this, promotionButton, letter]{ if (promotionButton->IsActive()){ std::string promote("promote "); promote += letter; messages.triggerEvent(Messages::TextToClient(promote)); } }); return promotionButton; }; auto promotionQueen = createPromotionButton("Queen", 'q'); createPromotionButton("Bishop", 'b'); createPromotionButton("Knight", 'n'); createPromotionButton("Rook", 'r'); auto promotionFrame = sfg::Frame::Create("Promotion"); promotionFrame->Add(promotionLayout); auto sideLayout = sfg::Box::Create(sfg::Box::Orientation::VERTICAL); sideLayout->Pack(player1); sideLayout->Pack(m_whiteClock); sideLayout->Pack(player2); sideLayout->Pack(m_blackClock); sideLayout->Pack(status.getView()); sfg::Table::Ptr mainLayout(sfg::Table::Create()); mainLayout->SetRowSpacings(2.f); mainLayout->SetColumnSpacings(2.f); mainLayout->Attach(canvas.getBoardWidget(),{0, 0, 3, 2},sfg::Table::EXPAND, sfg::Table::EXPAND, sf::Vector2f( 10.f, 0.f )); mainLayout->Attach(promotionFrame, {0, 2, 1, 1}); mainLayout->Attach(sideLayout, {3,0, 3, 1}); mainLayout->Attach(moveList.getView(),{3, 1, 3, 3}); mainLayout->Attach(buttons.layout,{0,4,6,1}); desktop.Add(settingsWindow.getWidget()); sfg::Notebook::Ptr notebook(sfg::Notebook::Create()); notebook->AppendPage(mainLayout,sfg::Label::Create("Board")); notebook->AppendPage(netWindow.getWidget(),sfg::Label::Create("Server")); notebook->GetSignal(sfg::Notebook::OnTabChange).Connect([this]{ netWindow.grabEntryFocus(); }); callbackSystem.connect(Action::Tab, [notebook](thor::ActionContext<Action> context){ if (context.event->key.control){ if (context.event->key.shift) notebook->PreviousPage(); else notebook->NextPage(); } }); boardWindow->Add(notebook); desktop.Add(boardWindow); buttons.connect->GetSignal(sfg::Button::OnLeftClick).Connect([this, notebook]{ client.connect(); notebook->SetCurrentPage(1); }); messages.connect(Messages::ID::GameState, [this](const Messages::Message& message){ auto received = boost::polymorphic_downcast<const Messages::GameState*>(&message); m_whiteClock->setTimeLeft(received->white_time); m_blackClock->setTimeLeft(received->black_time); if (received->turnColor == Color::White){ m_blackClock->stop(); m_whiteClock->start(); }else{ assert(received->turnColor==Color::Black); m_whiteClock->stop(); m_blackClock->start(); } if (premoveOn) { premoveOn = false; canvas.clearArrows(); requestMove(premove); } }); messages.connect(Messages::ID::GameStart, [this, promotionQueen, notebook](const Messages::Message& message){ auto received = boost::polymorphic_downcast<const Messages::GameStart*>(&message); player1->SetText(received->p1); player2->SetText(received->p2); premoveOn = false; promotionQueen->SetActive(true); updateClocks(); notebook->SetCurrentPage(0); }); messages.connect(Messages::ID::GameEnd, [this](const Messages::Message&){ //auto received = boost::polymorphic_downcast<const EndGameMessage*>(&message); premoveOn = false; canvas.clearArrows(); m_whiteClock->stop(); m_blackClock->stop(); }); callbackSystem.connect(Action::Scroll, [this](thor::ActionContext<Action> context){ int delta = context.event->mouseWheelScroll.delta; netWindow.scroll(delta); }); }
NotificationDialog::NotificationDialog(Notification *notification, QWidget *parent) : QDialog(parent), m_notification(notification), m_closeLabel(nullptr), m_closeTimer(0) { QFrame *notificationFrame(new QFrame(this)); notificationFrame->setObjectName(QLatin1String("notificationFrame")); notificationFrame->setStyleSheet(QLatin1String("#notificationFrame {padding:5px;border:1px solid #CCC;border-radius:10px;background:#F0F0f0;}")); notificationFrame->setCursor(QCursor(Qt::PointingHandCursor)); notificationFrame->installEventFilter(this); QBoxLayout *mainLayout(new QBoxLayout(QBoxLayout::LeftToRight)); mainLayout->setContentsMargins(0, 0, 0, 0); mainLayout->setSpacing(0); mainLayout->setSizeConstraint(QLayout::SetMinimumSize); mainLayout->addWidget(notificationFrame); QLabel *iconLabel(new QLabel(this)); iconLabel->setPixmap(ThemesManager::createIcon(QLatin1String("otter-browser-32")).pixmap(32, 32)); iconLabel->setStyleSheet(QLatin1String("padding:5px;")); QLabel *messageLabel(new QLabel(this)); messageLabel->setText(m_notification->getMessage()); messageLabel->setStyleSheet(QLatin1String("padding:5px;font-size:13px;")); messageLabel->setWordWrap(true); QStyleOption option; option.rect = QRect(0, 0, 16, 16); QPixmap pixmap(16, 16); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); style()->drawPrimitive(QStyle::PE_IndicatorTabClose, &option, &painter, this); m_closeLabel = new QLabel(notificationFrame); m_closeLabel->setToolTip(tr("Close")); m_closeLabel->setPixmap(pixmap); m_closeLabel->setAlignment(Qt::AlignTop); m_closeLabel->setMargin(5); m_closeLabel->installEventFilter(this); QBoxLayout *notificationLayout(new QBoxLayout(QBoxLayout::LeftToRight)); notificationLayout->setContentsMargins(0, 0, 0, 0); notificationLayout->setSpacing(0); notificationLayout->setSizeConstraint(QLayout::SetMinimumSize); notificationLayout->addWidget(iconLabel); notificationLayout->addWidget(messageLabel); notificationLayout->addWidget(m_closeLabel); notificationFrame->setLayout(notificationLayout); setLayout(mainLayout); setFixedWidth(400); setMinimumHeight(50); setMaximumHeight(150); setWindowOpacity(0); setWindowFlags(Qt::WindowStaysOnTopHint | Qt::Tool | Qt::FramelessWindowHint); setFocusPolicy(Qt::NoFocus); setAttribute(Qt::WA_DeleteOnClose, true); setAttribute(Qt::WA_ShowWithoutActivating, true); setAttribute(Qt::WA_TranslucentBackground, true); adjustSize(); m_animation = new QPropertyAnimation(this, QStringLiteral("windowOpacity").toLatin1()); m_animation->setDuration(500); m_animation->setStartValue(0.0); m_animation->setEndValue(1.0); m_animation->start(); const int visibilityDuration(SettingsManager::getOption(SettingsManager::Interface_NotificationVisibilityDurationOption).toInt()); if (visibilityDuration > 0) { m_closeTimer = startTimer(visibilityDuration * 1000); } }
KexiDataSourcePage::KexiDataSourcePage(QWidget *parent) : KexiPropertyPaneViewBase(parent) , m_noDataSourceAvailableSingleText( i18n("No data source could be assigned for this widget.") ) , m_noDataSourceAvailableMultiText( i18n("No data source could be assigned for multiple widgets.") ) , m_insideClearFormDataSourceSelection(false) #ifdef KEXI_NO_AUTOFIELD_WIDGET , m_tableOrQuerySchema(0) #endif { /*moved Q3VBoxLayout *vlyr = new Q3VBoxLayout(this); m_objectInfoLabel = new KexiObjectInfoLabel(this); m_objectInfoLabel->setObjectName("KexiObjectInfoLabel"); vlyr->addWidget(m_objectInfoLabel);*/ //moved vlyr->addSpacing(8); //Section 1: Form's/Widget's Data Source /*2.0 KoProperty::GroupContainer *container = new KoProperty::GroupContainer( i18n("Data Source"), this); layout()->addWidget(container); QWidget *contents = new QWidget(container); container->setContents(contents);*/ //2.0 QVBoxLayout *contentsVlyr = new QVBoxLayout(this); //2.0 contentsVlyr->setContentsMargins(0, 0, 0, 0); infoLabel()->setContentsMargins(0, 0, 0, spacing()); m_noDataSourceAvailableLabel = new QLabel(m_noDataSourceAvailableSingleText, this); m_noDataSourceAvailableLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); m_noDataSourceAvailableLabel->setContentsMargins(0, 0, 0, spacing()); //m_noDataSourceAvailableLabel->setAutoFillBackground(true); //m_noDataSourceAvailableLabel->setPaletteBackgroundColor(Qt::red); //2.0 m_noDataSourceAvailableLabel->setMargin(2); m_noDataSourceAvailableLabel->setAlignment(Qt::AlignBottom | Qt::AlignLeft); m_noDataSourceAvailableLabel->setWordWrap(true); mainLayout()->addWidget(m_noDataSourceAvailableLabel); //-Widget's Data Source QHBoxLayout *hlyr = new QHBoxLayout(); mainLayout()->addLayout(hlyr); #if 0 //! @todo unhide this when expression work // m_widgetDSLabel = new QLabel(i18nc("Table Field, Query Field or Expression", "Source field or expression"), this); #else m_widgetDSLabel = new QLabel( i18nc("Table Field or Query Field", "Widget's data source"), this); #endif m_widgetDSLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); //2.0 m_widgetDSLabel->setMargin(2); //2.0 m_widgetDSLabel->setMinimumHeight(IconSize(KIconLoader::Small) + 4); m_widgetDSLabel->setAlignment(Qt::AlignLeft | Qt::AlignBottom); hlyr->addWidget(m_widgetDSLabel); #if 0 //2.0: clear button is available in the combobox itself m_clearWidgetDSButton = new KexiSmallToolButton( koIcon("edit-clear-locationbar-rtl"), QString(), this); m_clearWidgetDSButton->setObjectName("clearWidgetDSButton"); m_clearWidgetDSButton->setMinimumHeight(m_widgetDSLabel->minimumHeight()); m_clearWidgetDSButton->setToolTip(i18n("Clear widget's data source")); hlyr->addWidget(m_clearWidgetDSButton); connect(m_clearWidgetDSButton, SIGNAL(clicked()), this, SLOT(clearWidgetDataSourceSelection())); #endif m_widgetDataSourceCombo = new KexiFieldComboBox(this); m_widgetDataSourceCombo->setObjectName("sourceFieldCombo"); m_widgetDataSourceCombo->setContentsMargins(0, 0, 0, 0); m_widgetDSLabel->setBuddy(m_widgetDataSourceCombo); connect(m_widgetDataSourceCombo->lineEdit(), SIGNAL(clearButtonClicked()), this, SLOT(clearWidgetDataSourceSelection())); mainLayout()->addWidget(m_widgetDataSourceCombo); m_widgetDataSourceComboSpacer = addWidgetSpacer(); /* m_dataSourceSeparator = new Q3Frame(contents); m_dataSourceSeparator->setFrameShape(Q3Frame::HLine); m_dataSourceSeparator->setFrameShadow(Q3Frame::Sunken); mainLayout()->addWidget(m_dataSourceSeparator);*/ // addSpacing(); //- Form's Data Source hlyr = new QHBoxLayout(); hlyr->setContentsMargins(0, 0, 0, 0); mainLayout()->addLayout(hlyr); m_dataSourceLabel = new QLabel(i18n("Form's data source"), this); m_dataSourceLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); //2.0 m_dataSourceLabel->setMargin(2); //2.0 m_dataSourceLabel->setMinimumHeight(IconSize(KIconLoader::Small) + 4); m_dataSourceLabel->setAlignment(Qt::AlignLeft | Qt::AlignBottom); hlyr->addWidget(m_dataSourceLabel); //m_dataSourceLabel->setAutoFillBackground(true); //m_dataSourceLabel->setPaletteBackgroundColor(Qt::red); m_gotoButton = new KexiSmallToolButton( koIcon("go-jump"), QString(), this); m_gotoButton->setObjectName("gotoButton"); //2.0 m_gotoButton->setMinimumHeight(m_dataSourceLabel->minimumHeight()); m_gotoButton->setToolTip(i18n("Go to selected form's data source")); m_gotoButton->setWhatsThis(i18n("Goes to selected form's data source")); hlyr->addWidget(m_gotoButton); connect(m_gotoButton, SIGNAL(clicked()), this, SLOT(slotGotoSelected())); #if 0 //2.0: clear button is available in the combobox itself m_clearDSButton = new KexiSmallToolButton( koIcon("edit-clear-locationbar-rtl"), QString(), this); m_clearDSButton->setObjectName("clearDSButton"); m_clearDSButton->setMinimumHeight(m_dataSourceLabel->minimumHeight()); m_clearDSButton->setToolTip(i18n("Clear form's data source")); hlyr->addWidget(m_clearDSButton); connect(m_clearDSButton, SIGNAL(clicked()), this, SLOT(clearFormDataSourceSelection())); #endif m_formDataSourceCombo = new KexiDataSourceComboBox(this); m_formDataSourceCombo->setObjectName("dataSourceCombo"); m_formDataSourceCombo->setContentsMargins(0, 0, 0, 0); m_dataSourceLabel->setBuddy(m_formDataSourceCombo); connect(m_formDataSourceCombo->lineEdit(), SIGNAL(clearButtonClicked()), this, SLOT(clearFormDataSourceSelection())); mainLayout()->addWidget(m_formDataSourceCombo); m_formDataSourceComboSpacer = addWidgetSpacer(); #ifdef KEXI_NO_AUTOFIELD_WIDGET m_availableFieldsLabel = 0; m_addField = 0; // m_fieldListView = 0; mainLayout()->addStretch(); #else // addSpacing(); /* Q3Frame *separator = new QFrame(this); separator->setFrameShape(Q3Frame::HLine); separator->setFrameShadow(Q3Frame::Sunken); vlyr->addWidget(separator);*/ /* KPopupTitle *title = new KPopupTitle(this); title->setTitle(i18n("Inserting fields")); vlyr->addWidget(title); vlyr->addSpacing(4);*/ //2. Inserting fields /*2.0 container = new KoProperty::GroupContainer(i18n("Inserting Fields"), this); static_cast<QBoxLayout*>(layout())->addWidget(container, 1);*/ //helper info //! @todo allow to hide such helpers by adding global option //2.0 contents = new QWidget(container); //2.0 container->setContents(contents); //2.0 mainLayout() = new QVBoxLayout(contents); hlyr = new QHBoxLayout(); hlyr->setContentsMargins(0, 0, 0, 0); mainLayout()->addLayout(hlyr); m_mousePointerLabel = new QLabel(this); hlyr->addWidget(m_mousePointerLabel); m_mousePointerLabel->setPixmap(koIcon("mouse_pointer")); m_mousePointerLabel->setFixedWidth(m_mousePointerLabel->pixmap() ? m_mousePointerLabel->pixmap()->width() : 0); m_availableFieldsDescriptionLabel = new QLabel( i18n("Select fields from the list below and drag them onto" " a form or click the \"Insert\" button"), this); m_availableFieldsDescriptionLabel->setAlignment(Qt::AlignLeft); m_availableFieldsDescriptionLabel->setWordWrap(true); hlyr->addWidget(m_availableFieldsDescriptionLabel); //Available Fields //2.0 mainLayout()->addSpacing(4); hlyr = new QHBoxLayout(); hlyr->setContentsMargins(0, 0, 0, 0); mainLayout()->addLayout(hlyr); m_availableFieldsLabel = new QLabel(i18n("Available fields"), this); m_availableFieldsLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); //2.0 m_availableFieldsLabel->setMargin(2); //2.0 m_availableFieldsLabel->setMinimumHeight(IconSize(KIconLoader::Small)); hlyr->addWidget(m_availableFieldsLabel); m_addField = new KexiSmallToolButton( koIcon("add_field"), i18nc("Insert selected field into form", "Insert"), this); m_addField->setObjectName("addFieldButton"); //2.0 m_addField->setMinimumHeight(m_availableFieldsLabel->minimumHeight()); // m_addField->setTextPosition(QToolButton::Right); m_addField->setFocusPolicy(Qt::StrongFocus); m_addField->setToolTip(i18n("Insert selected fields into form")); m_addField->setWhatsThis(i18n("Inserts selected fields into form")); hlyr->addWidget(m_addField); connect(m_addField, SIGNAL(clicked()), this, SLOT(slotInsertSelectedFields())); m_fieldListView = new KexiFieldListView(this, KexiFieldListView::ShowDataTypes | KexiFieldListView::AllowMultiSelection); m_fieldListView->setObjectName("fieldListView"); m_fieldListView->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding)); m_availableFieldsLabel->setBuddy(m_fieldListView); mainLayout()->addWidget(m_fieldListView, 1); connect(m_fieldListView, SIGNAL(selectionChanged()), this, SLOT(slotFieldListViewSelectionChanged())); connect(m_fieldListView, SIGNAL(fieldDoubleClicked(QString,QString,QString)), this, SLOT(slotFieldDoubleClicked(QString,QString,QString))); #endif mainLayout()->addStretch(1); connect(m_formDataSourceCombo, SIGNAL(textChanged(QString)), this, SLOT(slotFormDataSourceTextChanged(QString))); connect(m_formDataSourceCombo, SIGNAL(dataSourceChanged()), this, SLOT(slotFormDataSourceChanged())); connect(m_widgetDataSourceCombo, SIGNAL(selected()), this, SLOT(slotFieldSelected())); clearFormDataSourceSelection(); slotFieldListViewSelectionChanged(); }
Settings::Settings(sfg::Desktop &theDesktop): window(sfg::Window::Create()), desktop(theDesktop), closeButton(sfg::Button::Create("Close")), colors{{"Black","Blue","Blue2","Brown","Green","Green2","Red","Red2", "Violet","Violet2","White","Yellow"}}, boardColors{{"Black","Blue","Brown"}} { window->SetRequisition(sf::Vector2f(100.f,100.f)); window->SetTitle("Settings"); window->Show(false); sfg::Box::Ptr buttonLayout1 = sfg::Box::Create(sfg::Box::Orientation::VERTICAL); sfg::RadioButtonGroup::Ptr buttonGroup1(sfg::RadioButtonGroup::Create()); sfg::Box::Ptr buttonLayout2 = sfg::Box::Create(sfg::Box::Orientation::VERTICAL); sfg::RadioButtonGroup::Ptr buttonGroup2(sfg::RadioButtonGroup::Create()); int iMax(colors.size()); for (int i=0; i<iMax; ++i) { whiteButtons[i] = sfg::RadioButton::Create(colors[i],buttonGroup1); blackButtons[i] = sfg::RadioButton::Create(colors[i],buttonGroup2); buttonLayout1->Pack(whiteButtons[i]); buttonLayout2->Pack(blackButtons[i]); } sfg::Frame::Ptr frame1(sfg::Frame::Create("White")); frame1->Add(buttonLayout1); sfg::Frame::Ptr frame2(sfg::Frame::Create("Black")); frame2->Add(buttonLayout2); sfg::Box::Ptr buttonLayout3 = sfg::Box::Create(sfg::Box::Orientation::VERTICAL); sfg::RadioButtonGroup::Ptr buttonGroup3(sfg::RadioButtonGroup::Create()); iMax = boardColors.size(); for (int i=0; i<iMax; ++i) { boardButtons[i] = sfg::RadioButton::Create(boardColors[i],buttonGroup3); buttonLayout3->Pack(boardButtons[i]); } sfg::Frame::Ptr frame3(sfg::Frame::Create("Board")); frame3->Add(buttonLayout3); sfg::Table::Ptr mainLayout(sfg::Table::Create()); mainLayout->SetRowSpacings(3.f); mainLayout->SetColumnSpacings(3.f); mainLayout->Attach(frame1,{0,0,1,1}); mainLayout->Attach(frame2,{1,0,1,1}); mainLayout->Attach(frame3,{2,0,1,1}); mainLayout->Attach(closeButton,{2,1,1,1}); closeButton->GetSignal(sfg::Widget::OnLeftClick).Connect(std::bind(&Settings::requestClose,this)); window->Add(mainLayout); }
KexiDataSourcePage::KexiDataSourcePage(QWidget *parent) : KexiPropertyPaneViewBase(parent) , m_noDataSourceAvailableSingleText( i18n("No data source could be assigned for this widget.") ) , m_noDataSourceAvailableMultiText( i18n("No data source could be assigned for multiple widgets.") ) , m_insideClearFormDataSourceSelection(false) #ifdef KEXI_NO_AUTOFIELD_WIDGET , m_tableOrQuerySchema(0) #endif { infoLabel()->setContentsMargins(0, 0, 0, spacing()); m_noDataSourceAvailableLabel = new QLabel(m_noDataSourceAvailableSingleText, this); m_noDataSourceAvailableLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); m_noDataSourceAvailableLabel->setContentsMargins(0, 0, 0, spacing()); m_noDataSourceAvailableLabel->setAlignment(Qt::AlignBottom | Qt::AlignLeft); m_noDataSourceAvailableLabel->setWordWrap(true); mainLayout()->addWidget(m_noDataSourceAvailableLabel); //-Widget's Data Source QHBoxLayout *hlyr = new QHBoxLayout(); mainLayout()->addLayout(hlyr); #if 0 //! @todo unhide this when expression work // m_widgetDSLabel = new QLabel(i18nc("Table Field, Query Field or Expression", "Source field or expression"), this); #else m_widgetDSLabel = new QLabel( i18nc("Table Field or Query Field", "Widget's data source"), this); #endif m_widgetDSLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); m_widgetDSLabel->setAlignment(Qt::AlignLeft | Qt::AlignBottom); hlyr->addWidget(m_widgetDSLabel); #if 0 m_clearWidgetDSButton = new KexiSmallToolButton( koIcon("edit-clear-locationbar-rtl"), QString(), this); m_clearWidgetDSButton->setObjectName("clearWidgetDSButton"); m_clearWidgetDSButton->setMinimumHeight(m_widgetDSLabel->minimumHeight()); m_clearWidgetDSButton->setToolTip(i18n("Clear widget's data source")); hlyr->addWidget(m_clearWidgetDSButton); connect(m_clearWidgetDSButton, SIGNAL(clicked()), this, SLOT(clearWidgetDataSourceSelection())); #endif m_widgetDataSourceCombo = new KexiFieldComboBox(this); m_widgetDataSourceCombo->setObjectName("sourceFieldCombo"); m_widgetDataSourceCombo->setContentsMargins(0, 0, 0, 0); m_widgetDSLabel->setBuddy(m_widgetDataSourceCombo); connect(m_widgetDataSourceCombo->lineEdit(), SIGNAL(clearButtonClicked()), this, SLOT(clearWidgetDataSourceSelection())); mainLayout()->addWidget(m_widgetDataSourceCombo); m_widgetDataSourceComboSpacer = addWidgetSpacer(); //- Form's Data Source hlyr = new QHBoxLayout(); hlyr->setContentsMargins(0, 0, 0, 0); mainLayout()->addLayout(hlyr); m_dataSourceLabel = new QLabel(i18n("Form's data source"), this); m_dataSourceLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); m_dataSourceLabel->setAlignment(Qt::AlignLeft | Qt::AlignBottom); hlyr->addWidget(m_dataSourceLabel); m_gotoButton = new KexiSmallToolButton( koIcon("go-jump"), QString(), this); m_gotoButton->setObjectName("gotoButton"); m_gotoButton->setToolTip(i18n("Go to selected form's data source")); m_gotoButton->setWhatsThis(i18n("Goes to selected form's data source")); hlyr->addWidget(m_gotoButton); connect(m_gotoButton, SIGNAL(clicked()), this, SLOT(slotGotoSelected())); #if 0 m_clearDSButton = new KexiSmallToolButton( koIcon("edit-clear-locationbar-rtl"), QString(), this); m_clearDSButton->setObjectName("clearDSButton"); m_clearDSButton->setMinimumHeight(m_dataSourceLabel->minimumHeight()); m_clearDSButton->setToolTip(i18n("Clear form's data source")); hlyr->addWidget(m_clearDSButton); connect(m_clearDSButton, SIGNAL(clicked()), this, SLOT(clearFormDataSourceSelection())); #endif m_formDataSourceCombo = new KexiDataSourceComboBox(this); m_formDataSourceCombo->setObjectName("dataSourceCombo"); m_formDataSourceCombo->setContentsMargins(0, 0, 0, 0); m_dataSourceLabel->setBuddy(m_formDataSourceCombo); connect(m_formDataSourceCombo->lineEdit(), SIGNAL(clearButtonClicked()), this, SLOT(clearFormDataSourceSelection())); mainLayout()->addWidget(m_formDataSourceCombo); m_formDataSourceComboSpacer = addWidgetSpacer(); #ifdef KEXI_NO_AUTOFIELD_WIDGET m_availableFieldsLabel = 0; m_addField = 0; mainLayout()->addStretch(); #else //2. Inserting fields //helper info //! @todo allow to hide such helpers by adding global option hlyr = new QHBoxLayout(); hlyr->setContentsMargins(0, 0, 0, 0); mainLayout()->addLayout(hlyr); m_mousePointerLabel = new QLabel(this); hlyr->addWidget(m_mousePointerLabel); m_mousePointerLabel->setPixmap(koIcon("mouse_pointer")); m_mousePointerLabel->setFixedWidth(m_mousePointerLabel->pixmap() ? m_mousePointerLabel->pixmap()->width() : 0); m_availableFieldsDescriptionLabel = new QLabel( i18n("Select fields from the list below and drag them onto" " a form or click the \"Insert\" button"), this); m_availableFieldsDescriptionLabel->setAlignment(Qt::AlignLeft); m_availableFieldsDescriptionLabel->setWordWrap(true); hlyr->addWidget(m_availableFieldsDescriptionLabel); //Available Fields hlyr = new QHBoxLayout(); hlyr->setContentsMargins(0, 0, 0, 0); mainLayout()->addLayout(hlyr); m_availableFieldsLabel = new QLabel(i18n("Available fields"), this); m_availableFieldsLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); hlyr->addWidget(m_availableFieldsLabel); m_addField = new KexiSmallToolButton( koIcon("add_field"), i18nc("Insert selected field into form", "Insert"), this); m_addField->setObjectName("addFieldButton"); m_addField->setFocusPolicy(Qt::StrongFocus); m_addField->setToolTip(i18n("Insert selected fields into form")); m_addField->setWhatsThis(i18n("Inserts selected fields into form")); hlyr->addWidget(m_addField); connect(m_addField, SIGNAL(clicked()), this, SLOT(slotInsertSelectedFields())); m_fieldListView = new KexiFieldListView(this, KexiFieldListView::ShowDataTypes | KexiFieldListView::AllowMultiSelection); m_fieldListView->setObjectName("fieldListView"); m_fieldListView->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding)); m_availableFieldsLabel->setBuddy(m_fieldListView); mainLayout()->addWidget(m_fieldListView, 1); connect(m_fieldListView, SIGNAL(selectionChanged()), this, SLOT(slotFieldListViewSelectionChanged())); connect(m_fieldListView, SIGNAL(fieldDoubleClicked(QString,QString,QString)), this, SLOT(slotFieldDoubleClicked(QString,QString,QString))); #endif mainLayout()->addStretch(1); connect(m_formDataSourceCombo, SIGNAL(textChanged(QString)), this, SLOT(slotFormDataSourceTextChanged(QString))); connect(m_formDataSourceCombo, SIGNAL(dataSourceChanged()), this, SLOT(slotFormDataSourceChanged())); connect(m_widgetDataSourceCombo, SIGNAL(selected()), this, SLOT(slotFieldSelected())); clearFormDataSourceSelection(); slotFieldListViewSelectionChanged(); }
void KexiPropertyPaneViewBase::addSpacing() { return mainLayout()->addSpacing( spacing() ); }