#include "widget.h" #include "ui_widget.h" #include #include #include Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); X::OutputList outputs = X::Screen::inst()->getConnectedOutputList(); switch ( X::Screen::inst()->getConnectedOutputList().size() ){ /*************************************************************************/ case 1:// In case of one connected output - xrandr --auto qDebug() << "Normal output"; exit(0); break; /*************************************************************************/ case 2: // In case of two connected outputs // If one of the two connected outputs is a beamer if (true) //X::Screen::inst()->getOutputMap()[outputs[0]]->isProjector() // || X::Screen::inst()->getOutputMap()[outputs[1]]->isProjector() ) { qDebug() << "Cloned output"; /*****************************************************************/ // If the beamer transmits no reliable EDID data add modes if ( ! ( X::Screen::inst()->getOutputMap()[outputs[0]]->hasReliableEDID() && X::Screen::inst()->getOutputMap()[outputs[1]]->hasReliableEDID() ) ) { // TODO ADD MODES qDebug() << "Normal output"; } // Get a set of unique modes as string. Ugly but same resolutions may // have different ids. This means modes are compared by name which is X::ModeSet ModeSet1 = X::Screen::inst()->getOutputMap()[outputs[0]]->getModeSet(); X::ModeSet ModeSet2 = X::Screen::inst()->getOutputMap()[outputs[1]]->getModeSet(); QSet ModeNames1, ModeNames2; for (X::ModeSet::iterator i = ModeSet1.begin(); i != ModeSet1.end(); ++i) ModeNames1.insert(X::Screen::inst()->getModeMap()[*i]._name); for (X::ModeSet::iterator i = ModeSet2.begin(); i != ModeSet2.end(); ++i) ModeNames2.insert(X::Screen::inst()->getModeMap()[*i]._name); ModeNames1.intersect(ModeNames2); // Fill widget with data for ( QSet::iterator i = ModeNames1.begin(); i != ModeNames1.end(); ++i ) ui->comboBox->addItem(*i); } /*********************************************************************/ // If NEITHER of the outputs is a beamer (likely dualscreen setup) else { // TODO(manuel): Furture feature. Setup dualscreen qDebug() << "Dual output"; exit(0); } break; /*************************************************************************/ default: // If there are more than 3 outputs // its up to the user. Quit. qDebug() << ">2 outputs. Quit."; exit(0); break; } /*************************************************************************/ // Remove borders and stuff COMMENT FOR DEBUIGGIN //setWindowFlags(windowFlags() | Qt::FramelessWindowHint); // Resize widget to its content resize(sizeHint()); // Center dialog on screenbottom const QRect desktopRect = QApplication::desktop()->screenGeometry(); this->move( desktopRect.width()/2-this->width()/2, desktopRect.height()-this->height()); } Widget::~Widget() { delete ui; }