void RazorTaskBar::refreshTaskList() { XfitMan xf = xfitMan(); QList<Window> tmp = xf.getClientList(); //qDebug() << "** Fill ********************************"; //foreach (Window wnd, tmp) // if (xf->acceptWindow(wnd)) qDebug() << XfitMan::debugWindow(wnd); //qDebug() << "****************************************"; QMutableHashIterator<Window, RazorTaskButton*> i(mButtonsHash); while (i.hasNext()) { i.next(); int n = tmp.removeAll(i.key()); if (!n) { delete i.value(); i.remove(); } } foreach (Window wnd, tmp) { if (xf.acceptWindow(wnd)) { RazorTaskButton* btn = new RazorTaskButton(wnd, this); btn->setToolButtonStyle(mButtonStyle); if (buttonMaxWidth == -1) { btn->setMaximumWidth(btn->height()); } else { btn->setMaximumWidth(buttonMaxWidth); } mButtonsHash.insert(wnd, btn); // -1 is here due the last stretchable item mLayout->insertWidget(layout()->count()-1, btn); // now I want to set higher stretchable priority for buttons // to suppress stretchItem (last item) default value which // will remove that anoying aggresive space at the end -- petr mLayout->setStretch(layout()->count()-2, 1); } } refreshButtonVisibility(); activeWindowChanged(); }
void window_list::refreshTaskList() { XfitMan xf = xfitMan(); QList<Window> tmp = xf.getClientList(); //qDebug() << "** Fill ********************************"; //foreach (Window wnd, tmp) // if (xf->acceptWindow(wnd)) qDebug() << XfitMan::debugWindow(wnd); //qDebug() << "****************************************"; QMutableHashIterator<Window, InstanceOfWindow*> i(buttons); while (i.hasNext()) { i.next(); int n = tmp.removeAll(i.key()); if (!n) { //delete i.value(); i.value()->deleteLater(); i.remove(); } } foreach (Window wnd, tmp) { if (xf.acceptWindow(wnd)) { InstanceOfWindow* btn = new InstanceOfWindow(this,wnd); //btn->setToolButtonStyle(); buttons.insert(wnd, btn); // -1 is here due the last stretchable item layout->insertWidget(layout->count()-1, btn); // now I want to set higher stretchable priority for buttons // to suppress stretchItem (last item) default value which // will remove that anoying aggresive space at the end -- petr layout->setStretch(layout->count()-2, 1); //layout->addWidget(btn); } } setButtonMaxWidth(); refreshButtonVisibility(); activeWindowChanged(); }
bool LxQtTaskBar::windowOnActiveDesktop(WId window) const { if (!mShowOnlyCurrentDesktopTasks) return true; XfitMan xf = xfitMan(); int desktop = xf.getWindowDesktop(window); if (desktop == -1) // Show on all desktops return true; if (desktop == xf.getActiveDesktop()) return true; return false; }
bool window_list::windowOnActiveDesktop(Window window) const { if (!onlyShowCurrentDesktop) return true; XfitMan xf = xfitMan(); int desktop = xf.getWindowDesktop(window); if (desktop == -1) // Show on all desktops return true; if (desktop == xf.getActiveDesktop()) return true; return false; }
void RazorTaskBar::wheelEvent(QWheelEvent* event) { XfitMan xf = xfitMan(); QList<Window> winList = xf.getClientList(); int current = winList.indexOf(xf.getActiveAppWindow()); int delta = event->delta() < 0 ? 1 : -1; for (int ix = current + delta; 0 <= ix && ix < winList.size(); ix += delta) { Window window = winList.at(ix); if (xf.acceptWindow(window) && windowOnActiveDesktop(window)) { xf.raiseWindow(window); break; } } }
void LxQtTaskBar::refreshTaskList() { XfitMan xf = xfitMan(); QList<Window> tmp = xf.getClientList(); //qDebug() << "** Fill ********************************"; //foreach (Window wnd, tmp) // if (xf->acceptWindow(wnd)) qDebug() << XfitMan::debugWindow(wnd); //qDebug() << "****************************************"; QMutableHashIterator<WId, LxQtTaskButton*> i(mButtonsHash); while (i.hasNext()) { i.next(); int n = tmp.removeAll(i.key()); if (!n) { // if the button we're removing is the currently selected app if(i.value() == mCheckedBtn) mCheckedBtn = NULL; delete i.value(); i.remove(); } } foreach (Window wnd, tmp) { if (xf.acceptWindow(wnd)) { LxQtTaskButton* btn = new LxQtTaskButton(wnd, this); btn->setStyle(mStyle); btn->setToolButtonStyle(mButtonStyle); mButtonsHash.insert(wnd, btn); mLayout->addWidget(btn); } } refreshButtonVisibility(); mLayout->invalidate(); activeWindowChanged(); realign(); }
void RazorTaskBar::refreshTaskList() { XfitMan xf = xfitMan(); QList<Window> tmp = xf.getClientList(); //qDebug() << "** Fill ********************************"; //foreach (Window wnd, tmp) // if (xf->acceptWindow(wnd)) qDebug() << XfitMan::debugWindow(wnd); //qDebug() << "****************************************"; QMutableHashIterator<Window, RazorTaskButton*> i(mButtonsHash); while (i.hasNext()) { i.next(); int n = tmp.removeAll(i.key()); if (!n) { delete i.value(); i.remove(); } } foreach (Window wnd, tmp) { if (xf.acceptWindow(wnd)) { RazorTaskButton* btn = new RazorTaskButton(wnd, this); btn->setToolButtonStyle(mButtonStyle); mButtonsHash.insert(wnd, btn); mLayout->addWidget(btn); } } refreshButtonVisibility(); mLayout->invalidate(); activeWindowChanged(); realign(); }
void RazorTaskButton::contextMenuEvent(QContextMenuEvent* event) { XfitMan xf = xfitMan(); WindowAllowedActions allow = xf.getAllowedActions(mWindow); WindowState state = xf.getWindowState(mWindow); // qDebug() << "Context menu " << xfitMan().getName(mWindow); // qDebug() << " Allowed Actions:"; // qDebug() << " * Move " << allow.Move; // qDebug() << " * Resize " << allow.Resize; // qDebug() << " * Minimize " << allow.Minimize; // qDebug() << " * Shade " << allow.Shade; // qDebug() << " * Stick " << allow.Stick; // qDebug() << " * MaximizeHoriz " << allow.MaximizeHoriz; // qDebug() << " * MaximizeVert " << allow.MaximizeVert; // qDebug() << " * FullScreen " << allow.FullScreen; // qDebug() << " * ChangeDesktop " << allow.ChangeDesktop; // qDebug() << " * Close " << allow.Close; // qDebug() << " * AboveLayer " << allow.AboveLayer; // qDebug() << " * BelowLayer " << allow.BelowLayer; // qDebug(); // qDebug() << " Window State:"; // qDebug() << " * Modal " << state.Modal; // qDebug() << " * Sticky " << state.Sticky; // qDebug() << " * MaximizedVert " << state.MaximizedVert; // qDebug() << " * MaximizedHoriz" << state.MaximizedHoriz; // qDebug() << " * Shaded " << state.Shaded; // qDebug() << " * SkipTaskBar " << state.SkipTaskBar; // qDebug() << " * SkipPager " << state.SkipPager; // qDebug() << " * Hidden " << state.Hidden; // qDebug() << " * FullScreen " << state.FullScreen; // qDebug() << " * AboveLayer " << state.AboveLayer; // qDebug() << " * BelowLayer " << state.BelowLayer; // qDebug() << " * Attention " << state.Attention; QMenu menu(tr("Application")); QAction* a; /* KDE menu ******* + To &Desktop > + &All Desktops + --- + &1 Desktop 1 + &2 Desktop 2 + &To Current Desktop &Move Re&size + Mi&nimize + Ma&ximize + &Shade Ad&vanced > Keep &Above Others Keep &Below Others Fill screen &Layer > Always on &top &Normal Always on &bottom --- + &Close */ // ** Desktop menu ************************** int deskNum = xf.getNumDesktop(); if (deskNum > 1) { int winDesk = xf.getWindowDesktop(mWindow); QMenu* deskMenu = menu.addMenu(tr("To &Desktop")); a = deskMenu->addAction(tr("&All Desktops")); a->setData(-1); connect(a, SIGNAL(triggered(bool)), this, SLOT(moveApplicationToDesktop())); deskMenu->addSeparator(); for (int i=0; i<deskNum; ++i) { a = deskMenu->addAction(tr("Desktop &%1").arg(i+1)); a->setData(i); a->setEnabled( i != winDesk ); connect(a, SIGNAL(triggered(bool)), this, SLOT(moveApplicationToDesktop())); } int curDesk = xf.getActiveDesktop(); a = menu.addAction(tr("&To Current Desktop")); a->setData(curDesk); a->setEnabled( curDesk != winDesk ); connect(a, SIGNAL(triggered(bool)), this, SLOT(moveApplicationToDesktop())); }
subway_panel::subway_panel(int len, int hei, subway_panel::position_T pos, QString name): QFrame() { desktop = QApplication::desktop(); this->setWindowFlags(Qt::FramelessWindowHint|Qt::Window|Qt::WindowStaysOnTopHint); position = pos; switch(pos) { case top: case bottom: if(len == 0) { length = desktop->width(); } else length = len; this->setMinimumWidth(length); this->setMaximumWidth(length); weight = hei; this->setMaximumHeight(weight); this->setMinimumHeight(weight); layout = new QBoxLayout(QBoxLayout::LeftToRight,this); ((QBoxLayout*)layout)->setAlignment(Qt::AlignLeft); ((QBoxLayout*)layout)->setSpacing(0); ((QBoxLayout*)layout)->setMargin(0); ((QBoxLayout*)layout)->setContentsMargins(0,0,0,0); break; } switch(pos) { case top: setScreenPos(QPoint(0,0)); break; case bottom: setScreenPos(QPoint(0,desktop->height()-weight)); break; case left: case right: break; } settings = new QSettings("Subway","Panel-" + name + "-Applets"); if(settings->value("initialized","").toString() == "") { //Initialize new panel settings->setValue("initialized","y"); settings->setValue("appletnum",1); settings->setValue("applet1","window-list"); settings->setValue("applet1-height",32); settings->setValue("applet1-width",32); //settings->setValue("applet1-align","left"); } this->setLayout(layout); for(int i = 1;i<=settings->value("appletnum").toInt();i++) { QString applet_setting_name = QString("applet")+QVariant(i).toString(); QString name = settings->value(applet_setting_name).toString(); QWidget *applet; if(name == "window-list") { applet = new window_list(this); } else { applet = new QWidget(this); } int tmp; if((tmp = settings->value(applet_setting_name+"-height").toInt()) != 0) { applet->setMinimumHeight(tmp); applet->setMaximumHeight(tmp); } else { QSizePolicy sp = applet->sizePolicy(); sp.setVerticalPolicy(QSizePolicy::Expanding); applet->setSizePolicy(sp); } if((tmp = settings->value(applet_setting_name+"-width").toInt()) != 0) { applet->setMaximumWidth(tmp); applet->setMinimumWidth(tmp); } else { QSizePolicy sp = applet->sizePolicy(); sp.setHorizontalPolicy(QSizePolicy::Expanding); applet->setSizePolicy(sp); } //layout->addWidget(applet); layout->insertWidget(layout->count(),applet); } this->setAttribute(Qt::WA_X11NetWmWindowTypeDock); display = this->x11Info().display(); XfitMan fitman = xfitMan(); switch(pos) { case bottom: fitman.setStrut(winId(), 0, 0, 0, weight, /* Left */ 0, 0, /* Right */ 0, 0, /* Top */ 0, 0, /* Bottom */ 0, desktop->width() ); break; case top: fitman.setStrut(winId(), 0, 0, weight, 0, /* Left */ 0, 0, /* Right */ 0, 0, /* Top */ 0, desktop->width(), /* Bottom */ 0, 0 ); } }