QPoint KasPopup::calcPosition(KasItem *item, int w, int h) { KasBar *kasbar = item->kasbar(); QPoint pos = kasbar->itemPos(item); if((pos.x() < 0) && (pos.y() < 0)) return QPoint(); pos = kasbar->mapToGlobal(pos); int x = pos.x(); int y = pos.y(); if(kasbar->orientation() == Horizontal) { if(y < (qApp->desktop()->height() / 2)) y = y + kasbar->itemExtent(); else y = y - h; if((x + w) > qApp->desktop()->width()) x = x - w + kasbar->itemExtent(); } else { if(x < (qApp->desktop()->width() / 2)) x = x + kasbar->itemExtent(); else x = x - w; if((y + h) > qApp->desktop()->height()) y = y - h + kasbar->itemExtent(); } return QPoint(x, y); }
void KasAboutDialog::addDemoBar() { TQHBox *box = new TQHBox( this ); box->setLineWidth(2); box->setFrameStyle( TQFrame::Panel | TQFrame::Sunken ); box->setSpacing( spacingHint() ); box->setMargin( marginHint() ); KasBar *bar = new KasBar( Qt::Horizontal, box ); bar->setItemSize( KasBar::Large ); bar->setMasked( false ); KasItem *ci = new KasItem( bar ); ci->setIcon( LargeIcon( "icons" ) ); bar->append( ci ); KasPopup *pop = new KasPopup( ci ); ci->setPopup( pop ); ci->setCustomPopup( true ); connect( ci, TQT_SIGNAL(leftButtonClicked(TQMouseEvent *)), ci, TQT_SLOT(togglePopup()) ); KasBar *groupbar = bar->createChildBar( ( bar->orientation() == Qt::Horizontal ) ? Qt::Vertical : Qt::Horizontal, pop ); KasItem *i = 0; KasClockItem *clk = new KasClockItem( groupbar ); groupbar->append( clk ); i = new KasLoadItem( groupbar ); groupbar->append( i ); groupbar->addTestItems(); pop->resize( groupbar->size() ); bar->setFixedSize( bar->itemExtent(), bar->itemExtent() ); addWidgetBelowList( box ); }
KasBar *KasBar::createChildBar( Qt::Orientation o, QWidget *parent, const char *name ) { KasBar *child = new KasBar( o, this, parent, name ); child->rereadMaster(); return child; }
int main( int argc, char **argv ) { TDECmdLineArgs::init( argc, argv, "kasbar", "KasBar", I18N_NOOP( "An alternative task manager" ), VERSION_STRING ); TDECmdLineArgs::addCmdLineOptions( options ); TDEGlobal::locale()->setMainCatalogue( "kasbarextension" ); TDEApplication app; TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs(); kdDebug(1345) << "Kasbar starting..." << endl; int wflags = TQt::WStyle_Customize | TQt::WX11BypassWM | TQt::WStyle_DialogBorder | TQt::WStyle_StaysOnTop; KasBar *kasbar; TDEConfig conf( "kasbarrc" ); if ( args->isSet("test") ) { kasbar = new KasBar( Qt::Vertical, 0, "testkas", (TQ_WFlags)wflags ); kasbar->setItemSize( KasBar::Large ); kasbar->append( new KasClockItem(kasbar) ); kasbar->append( new KasItem(kasbar) ); kasbar->append( new KasLoadItem(kasbar) ); kasbar->append( new KasItem(kasbar) ); kasbar->addTestItems(); } else { KasTasker *kastasker = new KasTasker( Qt::Vertical, 0, "testkas", (TQ_WFlags)wflags ); kastasker->setConfig( &conf ); kastasker->setStandAlone( true ); kasbar = kastasker; kastasker->readConfig(); kastasker->move( kastasker->detachedPosition() ); kastasker->connect( kastasker->resources(), TQT_SIGNAL(changed()), TQT_SLOT(readConfig()) ); kastasker->refreshAll(); } kdDebug(1345) << "Kasbar about to show" << endl; app.setMainWidget( kasbar ); kasbar->show(); kasbar->setDetached( true ); KWin::setOnAllDesktops( kasbar->winId(), true ); kdDebug() << "kasbar: Window id is " << kasbar->winId() << endl; TDEApplication::kApplication()->dcopClient()->registerAs( "kasbar" ); app.connect( &app, TQT_SIGNAL( lastWindowClosed() ), TQT_SLOT(quit()) ); return app.exec(); }