summaryrefslogtreecommitdiff
path: root/core/launcher/launcher.cpp
Side-by-side diff
Diffstat (limited to 'core/launcher/launcher.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/launcher.cpp34
1 files changed, 30 insertions, 4 deletions
diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp
index fc944e1..e74301c 100644
--- a/core/launcher/launcher.cpp
+++ b/core/launcher/launcher.cpp
@@ -140,24 +140,33 @@ void CategoryTabWidget::prevTab()
}
}
void CategoryTabWidget::nextTab()
{
if ( categoryBar ) {
int n = categoryBar->count();
int tab = categoryBar->currentTab();
categoryBar->setCurrentTab( (tab + 1)%n );
}
}
+
+void CategoryTabWidget::showTab(const QString& id)
+{
+ if ( categoryBar ) {
+ int idx = ids.findIndex( id );
+ categoryBar->setCurrentTab( idx );
+ }
+}
+
void CategoryTabWidget::addItem( const QString& linkfile )
{
int i=0;
AppLnk *app = new AppLnk(linkfile);
if ( !app->isValid() ) {
delete app;
app=0;
}
if ( !app || !app->file().isEmpty() ) {
// A document
delete app;
app = new DocLnk(linkfile);
@@ -178,24 +187,30 @@ void CategoryTabWidget::addItem( const QString& linkfile )
return;
}
i++;
}
}
QCopEnvelope e("QPE/TaskBar","reloadApps()");
}
void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder,
AppLnkSet* docFolder, const QList<FileSystem> &fs)
{
+ QString current;
+ if ( categoryBar ) {
+ int c = categoryBar->currentTab();
+ if ( c >= 0 ) current = ids[c];
+ }
+
delete categoryBar;
categoryBar = new CategoryTabBar( this );
QPalette pal = categoryBar->palette();
pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) );
pal.setColor( QColorGroup::Background, pal.active().background().light(110) );
categoryBar->setPalette( pal );
delete stack;
stack = new QWidgetStack(this);
tabs=0;
ids.clear();
@@ -239,26 +254,32 @@ void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder,
docFolder->detachChildren();
docview->setFileSystems(fs);
docview->setToolsEnabled(TRUE);
setTabAppearance( "Documents", cfg ); // No tr
connect( categoryBar, SIGNAL(selected(int)), stack, SLOT(raiseWidget(int)) );
((LauncherView*)stack->widget(0))->setFocus();
cfg. setGroup ( "GUI" );
setBusyIndicatorType ( cfg. readEntry ( "BusyType", QString::null ));
+ if ( !current.isNull() ) {
+ showTab(current);
+ }
+
categoryBar->show();
stack->show();
+
+ QCopEnvelope e("QPE/TaskBar","reloadApps()");
}
void CategoryTabWidget::setTabAppearance( const QString &id, Config &cfg )
{
QString grp( "Tab %1" ); // No tr
cfg.setGroup( grp.arg(id) );
LauncherView *v = view( id );
int idx = ids.findIndex( id );
CategoryTab *tab = (CategoryTab *)categoryBar->tab( idx );
// View
QString view = cfg.readEntry( "View", "Icon" );
@@ -605,25 +626,24 @@ Launcher::Launcher( QWidget* parent, const char* name, WFlags fl )
// we have a pretty good idea how big we'll be
setGeometry( 0, 0, qApp->desktop()->width(), qApp->desktop()->height() );
tabs = 0;
rootFolder = 0;
docsFolder = 0;
int stamp = uidgen.generate(); // this is our timestamp to see which devices we know
//uidgen.store( stamp );
m_timeStamp = QString::number( stamp );
tabs = new CategoryTabWidget( this );
- tabs->setMaximumWidth( qApp->desktop()->width() );
setCentralWidget( tabs );
connect( tabs, SIGNAL(selected(const QString&)),
this, SLOT(viewSelected(const QString&)) );
connect( tabs, SIGNAL(clicked(const AppLnk*)),
this, SLOT(select(const AppLnk*)));
connect( tabs, SIGNAL(rightPressed(AppLnk*)),
this, SLOT(properties(AppLnk*)));
#if !defined(QT_NO_COP)
QCopChannel* sysChannel = new QCopChannel( "QPE/System", this );
connect( sysChannel, SIGNAL(received(const QCString &, const QByteArray &)),
@@ -665,24 +685,25 @@ static bool isVisibleWindow(int wid)
void Launcher::showMaximized()
{
if ( isVisibleWindow( winId() ) )
doMaximize();
else
QTimer::singleShot( 20, this, SLOT(doMaximize()) );
}
void Launcher::doMaximize()
{
QMainWindow::showMaximized();
+ tabs->setMaximumWidth( qApp->desktop()->width() );
}
void Launcher::updateMimeTypes()
{
MimeType::clear();
updateMimeTypes(rootFolder);
}
void Launcher::updateMimeTypes(AppLnkSet* folder)
{
for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) {
AppLnk *app = it.current();
@@ -823,24 +844,29 @@ void Launcher::updateDocs()
}
void Launcher::viewSelected(const QString& s)
{
setCaption( s + tr(" - Launcher") );
}
void Launcher::nextView()
{
tabs->nextTab();
}
+void Launcher::showTab(const QString& id)
+{
+ tabs->showTab(id);
+ raise();
+}
void Launcher::select( const AppLnk *appLnk )
{
if ( appLnk->type() == "Folder" ) { // No tr
// Not supported: flat is simpler for the user
} else {
if ( appLnk->exec().isNull() ) {
QMessageBox::information(this,tr("No application"),
tr("<p>No application is defined for this document."
"<p>Type is %1.").arg(appLnk->type()));
return;
}
@@ -880,25 +906,25 @@ void Launcher::updateLink(const QString& link)
if (link.isNull()) {
updateTabs();
notify_sm = true;
}
else if (link.isEmpty()) {
updateDocs();
}
else {
tabs->updateLink(link);
notify_sm = true;
}
-
+
if ( notify_sm )
QCopEnvelope e ( "QPE/TaskBar", "reloadApps()" );
}
void Launcher::systemMessage( const QCString &msg, const QByteArray &data)
{
QDataStream stream( data, IO_ReadOnly );
if ( msg == "linkChanged(QString)" ) {
QString link;
stream >> link;
if ( in_lnk_props ) {
got_lnk_change = TRUE;
@@ -1180,33 +1206,33 @@ void Launcher::launcherMessage( const QCString &msg, const QByteArray &data)
stream >> weight;
int italic;
stream >> italic;
if ( tabs->view(id) )
if ( !fam. isEmpty ( ))
tabs->view(id)->setViewFont( QFont(fam, size, weight, italic!=0) );
else
tabs->view(id)->unsetViewFont();
qDebug( "setFont: %s, %d, %d, %d", fam.latin1(), size, weight, italic );
}
else if ( msg == "setBusyIndicatorType(QString)" ) {
QString type;
- stream >> type;
+ stream >> type;
tabs->setBusyIndicatorType(type);
}
else if ( msg == "home()" ) {
if ( isVisibleWindow( winId ( )))
nextView ( );
else
raise ( );
-
+
}
}
void Launcher::storageChanged()
{
if ( in_lnk_props ) {
got_lnk_change = TRUE;
lnk_change = QString::null;
} else {
updateLink( QString::null );
}
}