Esempio n. 1
0
ObjectReferenceEdit::ObjectReferenceEdit(QWidget *parent)
    : QWidget(parent),
      mErrorTextColor(Qt::red)
{
    QHBoxLayout *layout = new QHBoxLayout(this);
    layout->setMargin(0);
    layout->setSpacing(0);

    mLineEdit = new QLineEdit(this);
    mLineEdit->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred));

    mOkTextColor = mLineEdit->palette().color(QPalette::Active, QPalette::Text);

    QToolButton *button = new QToolButton(this);
    button->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred));
    button->setFixedWidth(20);
    button->setText(QLatin1String("..."));
    layout->addWidget(mLineEdit);
    layout->addWidget(button);

    connect(button, SIGNAL(clicked(bool)),
            SLOT(buttonClicked()));
    connect(mLineEdit, SIGNAL(textChanged(QString)),
            SLOT(validate()));
    connect(mLineEdit, SIGNAL(textEdited(QString)),
            SLOT(setObjectId(QString)));

    setFocusProxy(mLineEdit);
    setFocusPolicy(Qt::StrongFocus);
    setAttribute(Qt::WA_InputMethodEnabled);
}
Esempio n. 2
0
FileEdit::FileEdit(QWidget *parent)
    : QWidget(parent)
    , mErrorTextColor(Qt::red)
{
    QHBoxLayout *layout = new QHBoxLayout(this);
    layout->setMargin(0);
    layout->setSpacing(0);

    mLineEdit = new QLineEdit(this);
    mLineEdit->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred));

    mOkTextColor = mLineEdit->palette().color(QPalette::Active, QPalette::Text);

    QToolButton *button = new QToolButton(this);
    button->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred));
    button->setFixedWidth(20);
    button->setText(QLatin1String("..."));
    layout->addWidget(mLineEdit);
    layout->addWidget(button);

    setFocusProxy(mLineEdit);
    setFocusPolicy(Qt::StrongFocus);
    setAttribute(Qt::WA_InputMethodEnabled);

    connect(mLineEdit, &QLineEdit::textEdited,
            this, &FileEdit::textEdited);
    connect(mLineEdit, &QLineEdit::textChanged,
            this, &FileEdit::validate);
    connect(button, &QAbstractButton::clicked,
            this, &FileEdit::buttonClicked);
}
Esempio n. 3
0
QToolButton* MenyBar::createButton(QString title) {
    QToolButton *genericButton = new QToolButton(this);
    genericButton->setText(title);
    genericButton->setFixedHeight(50);
    genericButton->setFixedWidth(100);
    return genericButton;

}
void FeatureTreeWidget::assignColorFromSMVTreeWidget(QString featureName)
{
    QTreeWidgetItem *item = getItemFromFeatureName(featureName);

    if (item!=0)
    {
        if (item->childCount()==0){
            mainWindow->questionDialog->writeToLog("assignColor<1>");
            Feature *f = getCorrespondingFeature(featureName);
            Color *c = static_cast<MyListWidgetItem*>(listWidget->selectedItems().at(0))->getBGColor();
            if (item->backgroundColor(0).isValid())
                mainWindow->removeColorAssignment(static_cast<MyTreeWidgetItem*>(item));
            colorManager->setColorForFeature(f,c);

            //X zum Abwählen der Farbe setzen
            if (itemWidget(item, 1))
                itemWidget(item, 1)->show();
            else{
                QToolButton *deleteButton = new QToolButton(this);
                deleteButton->setFont(QFont(QString("MS Shell Dlg 2"),9,10,false));
                //deleteButton->setFixedSize(15,18);
                deleteButton->setFixedWidth(16);

                QIcon icon = QIcon();
                icon.addPixmap(QPixmap(QString(":/images/cross.png")),QIcon::Normal,QIcon::On);
                deleteButton->setIcon(icon);
                deleteButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
                setItemWidget(item,1,deleteButton);
                connect(deleteButton,SIGNAL(clicked()),this,SLOT(removeColorAssignment()));
            }

            //aktualisiere SmvTreeWidget und TextEdit
            mainWindow->updateSMVTreeTexture(f);
            redrawListWidget();

            //wenn Farbe schon in FeatureTreeWidget vorhanden, setze diese auf weiß/transparent
            QList <QTreeWidgetItem*> *treeList = new QList <QTreeWidgetItem*>();
            findBackGroundColor(c->color,root,treeList);
            if (treeList->isEmpty()==false)
            {
                for (int i = 0;i < treeList->size();i++){
                    static_cast<MyTreeWidgetItem*>(treeList->at(i))->setBackgroundInvalid();
//                    treeList->at(i)->background(0).setStyle(Qt::NoBrush);
//                    treeList->at(i)->setBackgroundColor(0,QColor(0,0,0,0));
                    colorManager->deleteColorForFeature(getCorrespondingFeature(treeList->at(i)->text(0)));

                }
            }
            //setze Farbe im FeatureTreeWidget
            static_cast<MyTreeWidgetItem*>(item)->setBGColor(c);
            //item->setBackgroundColor(0,selected->color);
        }
    }
}
Esempio n. 5
0
//!
//! Fills the panel's control and options tool bars with the given actions.
//!
//! \param controlActions The actions to add to the control tool bar.
//! \param optionsActions The actions to add to the options tool bar.
//!
void TimelinePanel::fillControlToolBar ( QList<QAction *> controlActions )
{
    m_controlToolBar->addActions(controlActions);
    // set the popup mode for all tool buttons in the control tool bar to immediately display an associated menu (if present)
    for (int i = 0; i < controlActions.size(); ++i) {
        QToolButton *toolButton = qobject_cast<QToolButton *>(m_controlToolBar->widgetForAction(controlActions[i]));
        if (toolButton) {
            toolButton->setPopupMode(QToolButton::InstantPopup);
            toolButton->setFixedWidth(44);
        }
    }
}
KexiDBDateTimeEdit::KexiDBDateTimeEdit(const QDateTime &datetime, QWidget *parent)
        : QWidget(parent), KexiFormDataItemInterface()
{
    m_invalidState = false;
    m_cleared = false;
    m_readOnly = false;

    m_dateEdit = new Q3DateEdit(datetime.date(), this);
    m_dateEdit->setAutoAdvance(true);
    m_dateEdit->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding);
// m_dateEdit->setFixedWidth( QFontMetrics(m_dateEdit->font()).width("8888-88-88___") );
    connect(m_dateEdit, SIGNAL(valueChanged(QDate)), this, SLOT(slotValueChanged()));
    connect(m_dateEdit, SIGNAL(valueChanged(QDate)), this, SIGNAL(dateTimeChanged()));

    QToolButton* btn = new QToolButton(this);
    btn->setText("...");
    btn->setFixedWidth(QFontMetrics(btn->font()).width(" ... "));
    btn->setPopupDelay(1); //1 ms

    m_timeEdit = new Q3TimeEdit(datetime.time(), this);
    m_timeEdit->setAutoAdvance(true);
    m_timeEdit->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding);
    connect(m_timeEdit, SIGNAL(valueChanged(QTime)), this, SLOT(slotValueChanged()));
    connect(m_timeEdit, SIGNAL(valueChanged(QTime)), this, SIGNAL(dateTimeChanged()));

#ifdef QDateTimeEditor_HACK
    m_dte_date = KexiUtils::findFirstChild<QDateTimeEditor>(m_dateEdit, "QDateTimeEditor");
    m_dte_time = KexiUtils::findFirstChild<QDateTimeEditor>(m_timeEdit, "QDateTimeEditor");
#else
    m_dte_date = 0;
#endif

    m_datePickerPopupMenu = new QMenu(0, "date_popup");
    connect(m_datePickerPopupMenu, SIGNAL(aboutToShow()), this, SLOT(slotShowDatePicker()));
    m_datePicker = new KDatePicker(m_datePickerPopupMenu, QDate::currentDate(), 0);

    KDateTable *dt = KexiUtils::findFirstChild<KDateTable>(m_datePicker, "KDateTable");
    if (dt)
        connect(dt, SIGNAL(tableClicked()), this, SLOT(acceptDate()));
    m_datePicker->setCloseButton(true);
    m_datePicker->installEventFilter(this);
    m_datePickerPopupMenu->insertItem(m_datePicker);
    btn->setPopup(m_datePickerPopupMenu);

    QHBoxLayout* layout = new QHBoxLayout(this);
    layout->addWidget(m_dateEdit, 0);
    layout->addWidget(btn, 0);
    layout->addWidget(m_timeEdit, 0);
    //layout->addStretch(1);

    setFocusProxy(m_dateEdit);
}
Esempio n. 7
0
Timer::Timer(QWidget *parent) :
    QWidget(parent)
{
    setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);

    timerSettingFrame = new QFrame;
    timerRunningFrame = new QFrame;
    hourEdit = new QSpinBox;
    minEdit = new QSpinBox;
    secEdit = new QSpinBox;
    timeLabel = new QLabel;


    QToolButton *startButton = new QToolButton(this);
    startButton->setText(tr("Start")),
            connect(startButton, SIGNAL(released()), this, SLOT(startTime()));

    QToolButton *resetButton = new QToolButton(this);
    resetButton->setText(tr("Reset"));
    connect(resetButton, SIGNAL(pressed()), this, SLOT(resetTime()));

    QToolButton *pauseButton = new QToolButton(this);
    pauseButton->setText(tr("Pause"));
    pauseButton->setCheckable(true);
    connect(pauseButton, SIGNAL(clicked(bool)), this, SLOT(pauseTime(bool)));


    resetButton->setFixedWidth(50);
    startButton->setFixedWidth(50);
    pauseButton->setFixedWidth(50);

    hourEdit->setFixedWidth(50);
    hourEdit->setRange(0,24);
    hourEdit->setAccelerated(true);
    hourEdit->setSuffix(tr(" h"));
    minEdit->setFixedWidth(50);
    minEdit->setRange(0,60);
    minEdit->setAccelerated(true);
    minEdit->setSuffix(tr(" min"));
    secEdit->setFixedWidth(50);
    secEdit->setRange(0,60);
    secEdit->setAccelerated(true);
    secEdit->setSuffix(tr(" s"));

    secEdit->hide();


    connect(minEdit,SIGNAL(valueChanged(int)),this,SLOT(minSpinFormat(int)));
    connect(secEdit,SIGNAL(valueChanged(int)),this,SLOT(secSpinFormat(int)));

    timeLabel->setMinimumWidth(50);



    QGridLayout *settingLayout = new QGridLayout;
    settingLayout->addWidget(hourEdit,0,0);
    settingLayout->addWidget(minEdit,0,1);
    settingLayout->addWidget(secEdit,0,2);
    settingLayout->addWidget(startButton,1,0,1,3,Qt::AlignHCenter);
    settingLayout->setSpacing(2);
    settingLayout->setContentsMargins(3,3,3,3);
    timerSettingFrame->setLayout(settingLayout);




    QGridLayout *runningLayout = new QGridLayout;
    runningLayout->addWidget(timeLabel,0,0,1,2,Qt::AlignHCenter);
    runningLayout->addWidget(resetButton,1,0);
    runningLayout->addWidget(pauseButton,1,1);
    runningLayout->setSpacing(2);
    runningLayout->setContentsMargins(3,3,3,3);
    timerRunningFrame->setLayout(runningLayout);









    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(timerSettingFrame);
    layout->addWidget(timerRunningFrame);
    layout->setContentsMargins(3,3,3,3);
    setLayout(layout);



    timerRunningFrame->hide();
    timerSettingFrame->show();

}
//The main constructor.
GofunWidget::GofunWidget(WFlags f) : QWidget(0,0,f)
{    
	//Set up some accelerators
	accel = new QAccel(this);
	
	//Do some layout magic
	QHBoxLayout* hbox = new QHBoxLayout(this);
	QVBoxLayout* vbox = new QVBoxLayout();
	QHBoxLayout* hboxr = new QHBoxLayout();
	QHBoxLayout* hboxlabel = new QHBoxLayout();
    
	//This button group contains the buttons for the different directories
	cats_bg = new GofunVButtonGroup(this);
	cats_bg->setExclusive(true);
	cats_bg->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Expanding,false);
	connect(cats_bg, SIGNAL(clicked(int)),this, SLOT(changeDirectory(int)));
    
	//We 'load' this WidgetStack with GofunIconViews later on
	view_ws = new QWidgetStack(this);
	view_ws->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding,false);
	
	//It should be obvious what that is being
	QPushButton* quit = new QPushButton(tr("Quit"), this, "quit");
	quit->setFont(QFont("Times", 18));
	quit->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum,false);
	connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
	
	//The button marking your way to the settings-dialog
	QToolButton* config = new QToolButton(this);
    	config->setPixmap(QPixmap("config.png"));
	QToolTip::add(config,tr("Settings"));
	connect(config, SIGNAL(clicked()),this, SLOT(openSettingsDlg()));
	
	//A helpful help-button
	QToolButton* help = new QToolButton(this);
	help->setPixmap(QPixmap("help.png"));
	QToolTip::add(help,tr("Help"));
	connect(help, SIGNAL(clicked()),this, SLOT(showHelp()));
	
	//Layout magic, basically we add the WidgetStack and a vertical box to the
	//top horizontal box
	hbox->addWidget(view_ws);
	hbox->addLayout(vbox);
		    
	//Isn't it nice?
	QLabel* gflabel = new QLabel("GoFun",this);
	gflabel->setFont(QFont("Times",18, QFont::Bold));
	gflabel->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum,0);
	vbox->addLayout(hboxlabel);
	hboxlabel->addWidget(gflabel);
	
	//Common it is ...
	QToolButton* gficon = new QToolButton(this);
	gficon->setFixedWidth(32);
	gficon->setPixmap(QPixmap("gofun.png"));
	QToolTip::add(gficon,tr("About"));
	hboxlabel->addWidget(gficon);
	
	connect(gficon,SIGNAL(clicked()),this,SLOT(showAbout()));
	
	//The last steps in our layout magic
	vbox->addWidget(cats_bg);
	tools_cat = new GofunDirectoryButton("GoTools",this);
	vbox->addWidget(tools_cat);
	QWidget* wid = new QWidget(this);
	wid->setMinimumHeight(5);
	vbox->addWidget(wid);
	vbox->addLayout(hboxr);
	hboxr->addWidget(quit);            
	hboxr->addWidget(config);
	hboxr->addWidget(help);
	
	//This toolbutton shall be used to add directories
    	QToolButton* cat_add = new QToolButton(Qt::DownArrow,cats_bg);
	connect(cat_add, SIGNAL(clicked()),this, SLOT(popupDirectoryAdd()));
	QToolTip::add(cat_add,tr("Click this button to operate on directories"));
	cats_bg->insert(cat_add);   
	
	//Now load the whole GoFun-Data and care for its displaying
	loadData();
}
void FeatureTreeWidget::dropEvent(QDropEvent *event)
{
    //Darstellen des Drag-Bildes
    QByteArray itemData = event->mimeData()->data("application/x-dnditemdata");
    QDataStream dataStream(&itemData, QIODevice::ReadOnly);
    QPixmap pixmap;
    QPoint offset;
    dataStream >> pixmap >> offset;

    QTreeWidgetItem *item = itemAt(event->pos().x(),event->pos().y());
    //wenn auf ein TreeWidgetItem gedropt und dieses ein Blattknoten ist
    if (item!=0)
    {

        if (item->childCount()==0){
            mainWindow->questionDialog->writeToLog("assignColor<1>");
            Feature *f = getCorrespondingFeature(item->text(0));
            //Color *c = new Color (selected->color.convertTo(QColor::Hsv));
            Color *c = static_cast<MyListWidgetItem*>(listWidget->selectedItems().at(0))->getBGColor();
            if (item->backgroundColor(0).isValid())
                mainWindow->removeColorAssignment(static_cast<MyTreeWidgetItem*>(item));
            colorManager->setColorForFeature(f,c);

            //X zum Abwählen der Farbe setzen
            if (itemWidget(item, 1))
                itemWidget(item, 1)->show();
            else{
                QToolButton *deleteButton = new QToolButton(this);
                deleteButton->setFont(QFont(QString("MS Shell Dlg 2"),9,10,false));
                //deleteButton->setFixedSize(15,18);
                deleteButton->setFixedWidth(16);


                QIcon icon = QIcon();
                icon.addPixmap(QPixmap(QString(":/images/cross.png")),QIcon::Normal,QIcon::On);
                deleteButton->setIcon(icon);
                deleteButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
                setItemWidget(item,1,deleteButton);
                connect(deleteButton,SIGNAL(clicked()),this,SLOT(removeColorAssignment()));
            }

            //aktualisiere SmvTreeWidget und TextEdit
            mainWindow->updateSMVTreeTexture(f);
            redrawListWidget();

            //wenn Farbe schon in FeatureTreeWidget vorhanden, setze diese auf weiß/transparent
            QList <QTreeWidgetItem*> *treeList = new QList <QTreeWidgetItem*>();
            findBackGroundColor(c->color,root,treeList);
            if (treeList->isEmpty()==false)
            {
                for (int i = 0;i < treeList->size();i++){
                    static_cast<MyTreeWidgetItem*>(treeList->at(i))->setBackgroundInvalid();
//                    treeList->at(i)->background(0).setStyle(Qt::NoBrush);
//                    treeList->at(i)->setBackgroundColor(0,QColor(0,0,0,0));
                    colorManager->deleteColorForFeature(getCorrespondingFeature(treeList->at(i)->text(0)));

                }
            }
            //setze Farbe im FeatureTreeWidget
            static_cast<MyTreeWidgetItem*>(item)->setBGColor(c);
            //item->setBackgroundColor(0,selected->color);


        }
        event->ignore();
    }
}
void FeatureTreeWidget::assignAutomatically(){
    QString size = "";
    size = size.setNum(selectedItems().size());
    mainWindow->questionDialog->writeToLog("assignColor<" + size + ">");

    //schon zugewiesene Farben löschen
    for (int i = 0; i < selectedItems().size();i++){
        MyTreeWidgetItem *item = static_cast<MyTreeWidgetItem*>(selectedItems().at(i));
        if (item->backgroundColor(0).isValid()){
            MyListWidgetItem *listItem = new MyListWidgetItem(QString(""));
            listItem->setBGColor(item->getBGColor());
            //Icon wichtig, damit Item überhaupt angezeigt wird!
            QIcon icon = QIcon();
            icon.addPixmap(QPixmap(QString(":/images/leer.png")),QIcon::Normal,QIcon::On);
            listItem->setIcon(icon);
            listWidget->addItem(listItem);

            colorManager->deleteColorForFeature(getCorrespondingFeature(item->text(0)));

            //item->setBackgroundColor(0,QColor(-1,-1,-1,-1));
            item->setBackgroundInvalid();
            itemWidget(item,1)->hide();
        }
    }

    int cnt = 0;
    if (selectedItems().size() <= listWidget->count())
        cnt = selectedItems().size();
    else
        cnt = listWidget->count();
    //nacheinander jedem ausgewählten Knoten, möglichst unterschiedliche Farben des ListWidgets zuweisen
    QList <Color*> *colors = new QList<Color*>();
    int step = 0;
    if (cnt >1) //Division durch 0 verhindern
        step = (listWidget->count()-1)/(cnt-1);
    else
        step = 0;

    //Farben unterschiedlicher wählen
    if (step < selectedItems().size()/15)
        step = selectedItems().size()/15;
    //Farbliste füllen
    if (cnt > 1){
        for (int i = 0;i < cnt;i++){
            int add = 0;
            while (colors->contains(static_cast<MyListWidgetItem*>(listWidget->item((i*step + add)%listWidget->count()))->getBGColor())){
                add++;
            }
            colors->push_back(static_cast<MyListWidgetItem*>(listWidget->item((i*step + add)%listWidget->count()))->getBGColor());
        }
    }else{
        int random = rand() % listWidget->count();
        colors->push_back(static_cast<MyListWidgetItem*>(listWidget->item(random))->getBGColor());
    }

    for (int i = 0; i < cnt;i++){

        QTreeWidgetItem *item = selectedItems().at(i);

        Feature *f = getCorrespondingFeature(item->text(0));
        //Color *c = static_cast<MyListWidgetItem*>(listWidget->item(0))->getBGColor();
        Color *c = colors->at(i);
        colorManager->setColorForFeature(f,c);

        //aktualisiere SmvTreeWidget und TextEdit
        mainWindow->updateSMVTreeTexture(f);

        //X zum Abwählen der Farbe setzen
        if (itemWidget(item, 1))
            itemWidget(item, 1)->show();
        else{
            QToolButton *deleteButton = new QToolButton(this);
            deleteButton->setFont(QFont(QString("MS Shell Dlg 2"),9,10,false));
            //deleteButton->setFixedSize(15,18);
            deleteButton->setFixedWidth(16);

            QIcon icon = QIcon();
            icon.addPixmap(QPixmap(QString(":/images/cross.png")),QIcon::Normal,QIcon::On);
            deleteButton->setIcon(icon);
            deleteButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
            setItemWidget(item,1,deleteButton);
            connect(deleteButton,SIGNAL(clicked()),this,SLOT(removeColorAssignment()));
        }


        //wenn Farbe schon in FeatureTreeWidget vorhanden, setze diese auf weiß/transparent
        QList <QTreeWidgetItem*> *treeList = new QList <QTreeWidgetItem*>();
        findBackGroundColor(listWidget->item(0)->backgroundColor(),root,treeList);
        if (treeList->isEmpty()==false)
        {
            for (int i = 0;i < treeList->size();i++){
                static_cast<MyTreeWidgetItem*>(treeList->at(i))->setBackgroundInvalid();
//                treeList->at(i)->background(0).setStyle(Qt::NoBrush);
//                treeList->at(i)->setBackgroundColor(0,QColor(0,0,0,0));
                colorManager->deleteColorForFeature(getCorrespondingFeature(treeList->at(i)->text(0)));
            }
        }
        //setze Farbe im FeatureTreeWidget
        static_cast<MyTreeWidgetItem*>(item)->setBGColor(c);

        redrawListWidget();

    }
}