⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 categoryedit_p.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	gl->addWidget( d->deleteBtn, 1, 2 );#endif    }    d->mStrApp = appName;    d->mVisible = visibleName;#ifdef QTOPIA_DESKTOP    // This was set before this function call    d->checkable = gCheckable;#else    d->checkable = TRUE;#endif    QStringList appCats = d->mCategories.labels( d->mStrApp );    QArray<int> cats = d->mCategories.ids(d->mStrApp, appCats);    lvView->clear();    QStringList::ConstIterator it;    int i, j;    for ( i = 0, it = appCats.begin(); it != appCats.end(); i++, ++it ) {	CategoryEditListItem *chk	    = new CategoryEditListItem( lvView, (*it), d->checkable );	d->setGlobal( chk, d->mCategories.isGlobal((*it)) );	if ( d->checkable ) {	    // Is this record using this category, then we should check it	    for ( j = 0; j < (int)recCats.count(); j++ ) {		if ( cats[i] == recCats[j] ) {		    chk->setOn( true );		    break;		}	    }	}    }    lvView->setSorting( 0, TRUE );    lvView->sort();    if ( lvView->childCount() >= 1 ) {	lvView->setSelected( lvView->firstChild(), TRUE );    }    enableButtons();}#ifdef QTOPIA_DESKTOPvoid CategoryEdit::setCategories( const QArray<int> &recCats,				  QString appName, QString visibleName, bool checkable ){    // setCategories will grab this value and put it into the d pointer    gCheckable = checkable;    setCategories( recCats, appName, visibleName );}void CategoryEdit::refresh(){    if ( !d )	return;    d->mCategories.load( categoryFileName() );    setCategories( QArray<int>(), d->mStrApp, d->mVisible, d->checkable );}#endifCategoryEdit::~CategoryEdit(){    if ( d )	delete d;}void CategoryEdit::slotSetText( QListViewItem *newItem ){    updateInline();    d->editItem = (CategoryEditListItem*)newItem;    d->nameChanged = FALSE;    if ( !d->editItem )	return;    d->orgName = d->editItem->text(0);}void CategoryEdit::slotAdd(){    QString name = "";    d->mCategories.addCategory( d->mStrApp, name );    QListViewItem *chk = new CategoryEditListItem( lvView, name, d->checkable );    d->setGlobal( chk, FALSE );    lvView->setSelected( chk, TRUE );    d->nameChanged = TRUE;    enableButtons();    d->editingNew = TRUE;}void CategoryEdit::slotRemove(){    d->editItem = (CategoryEditListItem*)lvView->selectedItem();    if ( d->editItem ) {	QListViewItem *nextItem = d->editItem->itemBelow();	if ( !nextItem )	    nextItem = d->editItem->itemAbove();	if ( !d->editingNew ) {	    if ( d->isGlobal( d->editItem ) ) {		switch( QMessageBox::warning( this, tr( "Removing Category" ),			    tr( "<qt>Deleting a global category "				"effects all applications. "				"Any items in this category "				"will become unfiled."				"<br>Are you sure you want to do this?</qt>"),			    QMessageBox::Yes,			    QMessageBox::No | QMessageBox::Default ) ) {		    case QMessageBox::Yes:			break;		    default:			return;		}	    } else {		switch( QMessageBox::warning( this, tr( "Removing Category" ),			    tr( "<qt>Deleting a local category will make "				"all items in this category unfiled."				"<br>Are you sure you want to do this?</qt>"),			    QMessageBox::Yes, QMessageBox::No ) ) {		    case QMessageBox::Yes:			break;		    default:			return;		}	    }	}	d->mCategories.removeCategory( d->mStrApp, d->orgName );	d->settingItem = TRUE;	delete d->editItem;	d->editItem = 0;	d->settingItem = FALSE;	if ( nextItem )	    lvView->setSelected( nextItem, TRUE );    }    if ( lvView->childCount() < 1 ) {	d->settingItem = TRUE;	d->settingItem = FALSE;    }    enableButtons();}void CategoryEdit::slotSetGlobal( bool isChecked ){    if ( d->settingItem )	return;    if ( d->editItem ) {	if ( isChecked ) {	    d->setGlobal( d->editItem, isChecked );	} else {	    switch( QMessageBox::warning( this,			tr( "Global Category" ),			tr( "<qt>Making this category local "			    "will delete it from all other apps. "			    "Any items in this category will become "			    "unfiled.<br>Continue?</qt>" ),			QMessageBox::Yes, QMessageBox::No ) ) {		case QMessageBox::Yes : break;		default:		    return;	    }	    d->setGlobal( d->editItem, isChecked );	}	d->mCategories.setGlobal( d->mStrApp, d->orgName, isChecked );    }}void CategoryEdit::slotTextChanged( const QString &str ){    if ( d->editItem == 0 || d->settingItem )	return;    d->nameChanged = TRUE;    d->editItem->setText( str );}QArray<int> CategoryEdit::newCategories(){    QArray<int> a;    if ( d ) {	QStringList sl;	d->mCategories.save( categoryFileName() );	QListViewItemIterator it( lvView );	QValueList<int> l;	for ( ; it.current(); ++it ) {	    CategoryEditListItem* item = (CategoryEditListItem*)it.current();	    if ( item->isOn() )		l.append( d->mCategories.id( d->mStrApp, item->label() ) );	}	int i = 0;	a.resize( l.count() );	for ( QValueList<int>::ConstIterator lit = l.begin(); lit != l.end(); ++lit ) {	    a[(int)i++] = *lit;	}    }    return a;}void CategoryEdit::accept(){}#ifdef QTOPIA_DESKTOPstatic QString mCatFileName;void Categories::setCategoryFileName(const QString &s){    mCatFileName = s;}#endifQString categoryFileName(){#ifdef QTOPIA_DESKTOP    return mCatFileName;#else    QDir dir = QString(QDir::homeDirPath() + "/Settings");    if ( !dir.exists() )#ifndef Q_OS_WIN32	mkdir( dir.path().local8Bit(), 0700 );#else        dir.mkdir(dir.path());#endif    return dir.path() + "/" + "Categories" + ".xml"; // No tr#endif // QTOPIA_DESKTOP}void CategoryEdit::kludge(){    lvView->setMaximumHeight( 130 );}bool CategoryEdit::tryAccept(){    if ( d->editDialogHack ) {	slotSetText( d->editItem );	if ( d->changedGlobal )	    slotSetGlobal( !d->isGlobal( d->editItem ) );	return TRUE;    } else {	return updateInline();    }}bool CategoryEdit::updateInline(){    bool result = TRUE;    disconnect( lvView, SIGNAL( selectionChanged(QListViewItem*) ), this, SLOT( slotSetText(QListViewItem*) ) );    if ( d->nameChanged && d->editItem ) {	d->settingItem = TRUE;	QString newName = d->editItem->text( 0 );	RenameResult r = (RenameResult) tryRename(newName, d->isGlobal( d->editItem ) );	if ( r == Ok ) {	    d->editItem->setText( newName );	} else if ( r == Failed ) {	    d->editItem->setText( d->orgName );	    result = FALSE;	} else if ( r == MadeGlobal ) {	    d->editItem->setText( d->orgName );	    QListViewItem *c = new CategoryEditListItem( lvView, newName, d->checkable );	    d->setGlobal( c, TRUE );	    result = FALSE;	}	d->settingItem = FALSE;    }    connect( lvView, SIGNAL( selectionChanged(QListViewItem*) ), this, SLOT( slotSetText(QListViewItem*) ) );    return result;}static bool contains(const Categories &c, const QString &label){    if ( c.globalGroup().contains(label) )	return TRUE;    for ( QMap<QString, CategoryGroup>::ConstIterator it = c.appGroupMap().begin();	    it != c.appGroupMap().end(); ++it ) {	if ( (*it).contains(label) )	    return TRUE;    }    return FALSE;}static void setGlobal(Categories &c, const QString &catname){    for ( QMap<QString, CategoryGroup>::ConstIterator it = c.appGroupMap().begin();	    it != c.appGroupMap().end(); ++it ) {	if ( (*it).contains(catname) ) {	    c.setGlobal( it.key(), catname, TRUE );	    return;	}    }}int CategoryEdit::tryRename(const QString &newName, bool global){    QString name = newName.stripWhiteSpace();    if ( name == d->orgName )	return (int) Ok;    if (name.isEmpty() )	return (int) Failed;    if ( contains(d->mCategories, newName) && !d->mCategories.globalGroup().contains(newName)	    && !d->mCategories.appGroupMap()[d->mStrApp].contains(newName) ) {	switch( QMessageBox::warning( d->w, tr("Duplicate categories"),				  tr("<qt>There already exists a local category named "				  "<b>%1</b> in another application."				  "<br>Make that category a global group?</qt>").arg(newName),				  QMessageBox::Yes, QMessageBox::No) ) {	    case QMessageBox::Yes:		setGlobal(d->mCategories, newName);		return (int) MadeGlobal;	    case QMessageBox::No: return (int) Failed;	}    }    bool success;    if ( global ) {	success = d->mCategories.renameGlobalCategory( d->orgName, newName );    } else {	success = d->mCategories.renameCategory( d->mStrApp, d->orgName, newName );    }    if ( !success ) {        //append number to cat name until we find a name that doesn't exist yet        int version = 2;        QString tmpName;        while (!success) {            tmpName = newName;            tmpName += QString::number(version);            if (global) {	        success = d->mCategories.renameGlobalCategory( d->orgName, tmpName );            } else {	        success = d->mCategories.renameCategory( d->mStrApp, d->orgName, tmpName );            }            if (success)                 d->orgName = tmpName;            version++;        }	QMessageBox::warning( d->w, tr("Duplicate categories"),			      tr("<qt>There is already a category named "				 "%1. Please choose another name, or delete "				 "the duplicate.</qt>").arg(newName) );	return (int) Failed;    } else	return (int) Ok;}void CategoryEdit::enableButtons(){    CategoryEditListItem *editItem = (CategoryEditListItem*)lvView->currentItem();    bool e = editItem?editItem->editable():FALSE;    d->editAction->setEnabled(e);    d->deleteAction->setEnabled(e);#ifndef QTOPIA_PHONE    d->editBtn->setEnabled(e);    d->deleteBtn->setEnabled(e);#endif}#include "categoryedit_p.moc"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -