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

📄 createsmileywindow.cpp

📁 linux下的eva源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		emit customSmileyChanged();	}	close();}// add a groupvoid CustomSmileyManager::slotAddGroupClicked( ){	QString name = QString(i18n("Group%1")).arg(m_Config->numGroups());	QString path = EvaMain::user->getSetting()->getCustomSmileyDir() + "/";	QDir dir(path + name);	if(!dir.exists()){ // if the dest dir doesn't exist,		if(dir.mkdir( path + name )) // create the dir			m_IsChanged = true;		else{  // create failed			KMessageBox::error( this, i18n( "Cannot create the directory \"%1\". " ).arg( dir.path() ), i18n( "Add Group" ) );			return;		}	} else { // the directory exists, the group name should be used already		KMessageBox::error( this, i18n( "A directory named \"%1\" already exists. " ).arg( dir.path() ), i18n( "Directory Exists!" ) );		return;	}	QListViewItem *item = new QListViewItem(lvGroups, lvGroups->lastItem(), name);	m_Config->addGroup( name );	m_IsChanged = true;	m_Config->saveXML();	lvGroups->setSelected( item, true);	d->m_Action = GroupActionPrivate::GEdit;	d->m_Item = item;	d->m_OldName = name;	item->setRenameEnabled( 0, true);	item->startRename( 0 );}// rename the groupvoid CustomSmileyManager::slotEditGroupClicked( ){	QListViewItem *item = lvGroups->selectedItem();	if(item){		if(item == lvGroups->firstChild()) return;		d->m_Action = GroupActionPrivate::GEdit;		d->m_Item = item;		d->m_OldName = item->text( 0 );		item->setRenameEnabled( 0, true );		item->startRename( 0 );	}}/** remove one group, 2 options:      1: remove all smileys in this group, then remove the group itself      2: move all sub items into another group, then remove the empty group     NOTE: this operation is un-recoverable.*/void CustomSmileyManager::slotRemoveGroupClicked( ){	if(!m_Config) return;	QListViewItem *item = lvGroups->selectedItem();	if(item){		if(item == lvGroups->firstChild()) return; // never remove default group		int index = m_Config->groupIndex( item->text( 0 ) );		if(index <= -1) return;		QString path = EvaMain::user->getSetting()->getCustomSmileyDir() + "/";		QDir dir( path + item->text(0) );		FaceList list = m_Config->groupMembers( index);		int result = -2;		if(list.size() > 0 ){			result = RmSmileyGroupDialog::QueryDialog( index, m_Config, this);			switch(result){				case -2: // abort					return;					break;				case -1:  // remove all					break;				default: // otherwise, move to result				{					if(dir.exists()){						dir.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks );						const QFileInfoList *list = dir.entryInfoList();						QFileInfoListIterator it( *list);						QFileInfo *fi;						QString destDir = path;						if(result>0)							destDir += ( m_Config->groupName( result ) + "/") ;						while( (fi = it.current() ) != 0 ){							EvaHelper::copyFile(fi->absFilePath(), (destDir + fi->fileName()) );							++it;						}					}					m_Config->moveChildrenTo(index, result);					m_IsChanged = true;				}			}		}		if(dir.exists()){			// update the in-memory config			if(m_Config->removeGroup( index )){				lvGroups->takeItem( item);				delete item;				m_IsChanged = true;			} else return;			dir.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks );			const QFileInfoList *list = dir.entryInfoList();			QFileInfoListIterator it( *list);			QFileInfo *fi;			while( (fi = it.current() ) != 0 ){				dir.remove( fi->absFilePath() );				++it;			}			// as all files have been deleted,  we need keep the config file up to date.			m_Config->saveXML();			if( ! dir.rmdir( dir.path(), true)){				KMessageBox::error( this, i18n( "Remove directory \"%1\" failed. " ).arg( dir.path() ),							i18n( "Remove Directory!" ) );			}		}	}}void CustomSmileyManager::slotGroupRenamed( QListViewItem *item, int /*col*/, const QString & text){	item->setRenameEnabled( 0, false ); // make it un-editable	if(!m_Config) return;	if(d->m_Action != GroupActionPrivate::GEdit) return;	if(d->m_Item != item ) return;	if(d->m_OldName == text) return;		if( ! m_Config->renameGroup(d->m_OldName, text)){		KMessageBox::information( this, i18n( "Cannot rename the group name \"%1\" to \"%2\". " )									.arg( d->m_OldName).arg( text),								i18n( "Rename Group" ) );	} else{		QString path = EvaMain::user->getSetting()->getCustomSmileyDir() + "/";		QDir dir(path + d->m_OldName);		if(dir.exists()){			if(!dir.rename(path + d->m_OldName, path + text, true)){				KMessageBox::error( this, i18n( "Can not change the directory name: %1. " )									.arg( dir.path()), i18n("Rename Group") );			} else{				m_IsChanged = true;			}		} else {			if(dir.mkdir( path + text )){				m_IsChanged = true;			}else				KMessageBox::error( this, i18n( "Cannot create the directory: \"%1\". " ).arg( dir.path() ),							i18n( "Rename Group" ) );		}	}}void CustomSmileyManager::slotGroupSelectionChanged( QListViewItem * group){	if(!group) return;	group->setSelected( true );	loadSmileys(m_Config->groupIndex( group->text(0) ) );}void CustomSmileyManager::slotFaceSelectionChanged( ){	// QTable::numSelections() doesn't return the correct value	// if use select some rows by pressing shift key	int numSelections = 0;	int first = -1;	for(int r = 0; r < tblFaceList->numRows(); r++){		numSelections += ((tblFaceList->isRowSelected(r))?1:0);		if( (numSelections == 1) && (first == -1) ){			first = r;		}	}	bool isSingle = (numSelections == 1);	btnEdit->setEnabled(isSingle);	btnUp->setEnabled(isSingle);	btnDown->setEnabled(isSingle);	if(numSelections){		QListViewItem *item = lvGroups->selectedItem();		if(item){			int gId = m_Config->groupIndex( item->text( 0 ) );			if(gId < 0) return;			CustomFace face = m_Config->getFace( gId, first);			QString path = EvaMain::user->getSetting()->getCustomSmileyDir() + "/";			if(gId > 0 )				path += (item->text(0) + "/");			QString ext = face.org().right(3);			lblPreview->clear();			if(ext.lower() == "gif"){				lblPreview->setMovie( QMovie(path + face.org()));			} else {				QImage img(path + face.org() );				lblPreview->setPixmap( QPixmap(img.smoothScale( lblPreview->size(), QImage::ScaleMin)));			}		}	}}void CustomSmileyManager::slotFaceValueChanged( int row, int col ){	if(!m_Config) return;	QListViewItem *item = lvGroups->selectedItem();	if(item){		int gId = m_Config->groupIndex( item->text( 0 ) );		if(gId < 0) return;		QString text = tblFaceList->text(row, col);		switch(col){		case 1:  // tip			m_Config->updateFaceTip(gId, row, tblFaceList->text(row, col));			m_Config->saveXML();			m_IsChanged = true;			break;		case 2:  // shortcut			m_Config->updateFaceShortcut(gId, row, tblFaceList->text(row, col));			m_Config->saveXML();			m_IsChanged = true;			break;		default: // anything else, ignore			break;		}	}}void CustomSmileyManager::slotAddSmiley( ){	if(!m_Config) return;	QListViewItem *item = lvGroups->selectedItem();	if(! item) return;	int gId = m_Config->groupIndex( item->text( 0 ) );	if(gId < 0) return;		CreateSmileyWindow *win = new CreateSmileyWindow(QString::null, gId);	connect(win, SIGNAL(addCustomSmileyReady( bool )), this, SLOT(slotAddCustomSmileyReady( bool )));	win->show();}void CustomSmileyManager::slotAddCustomSmileyReady( bool ok){	if(!ok) return;	if(!m_Config) return;	QListViewItem *item = lvGroups->selectedItem();	if(! item) return;	int gId = m_Config->groupIndex( item->text( 0 ) );	if(gId < 0) return;	m_Config->loadXML();	loadSmileys(gId);	// notify smiley popup window to update	emit customSmileyChanged();}bool CustomSmileyManager::removeSmileyFile( const CustomFace & face ){	QString path = EvaMain::user->getSetting()->getCustomSmileyDir() + "/";	if(face.group() > 0){		path += ( m_Config->groupName( face.group()) + "/");	}	QDir dir( path);	if(dir.exists()){		if(dir.remove( path + face.fixed())) // remove thumbnail			return dir.remove(path + face.org()); // remove smiley	}	return false;}void CustomSmileyManager::slotRemoveSmiley( ){	if(!m_Config) return;	QListViewItem *item = lvGroups->selectedItem();	if(item){		int gId = m_Config->groupIndex( item->text( 0 ) );		if(gId < 0) return;		// as removing row also clear the selection( or change to the last row),		// so we have to record the selection first		bool *flags = new bool[tblFaceList->numRows()];		int row = 0;		for(row = 0; row < tblFaceList->numRows(); row++){			if (tblFaceList->isRowSelected(row))				flags[row] = true;			else				flags[row] = false;		}		for( row = tblFaceList->numRows() -1; row >= 0; row--){			if (flags[row]){				CustomFace face = m_Config->getFace( gId, row);				if(removeSmileyFile(face)){					// update config first					m_Config->removeFace( gId, row);					m_Config->saveXML(); // update config file in case								// update display					tblFaceList->removeRow(row);							m_IsChanged = true;				}			}		}		delete []flags;	}}void CustomSmileyManager::slotEditSmiley( ){	int row = 0;	for(row = 0; row < tblFaceList->numRows(); row++){		if (tblFaceList->isRowSelected(row)) break;	}	// start editing tip. (should we set editing shortcut as default?)	tblFaceList->editCell(row, 1);}void CustomSmileyManager::slotUpSmiley( ){	if(!m_Config) return;	QListViewItem *item = lvGroups->selectedItem();	if(item){		int gId = m_Config->groupIndex( item->text( 0 ) );		if(gId < 0) return;		int row = 1; // the first row cannot be moved up		for(row = 1; row < tblFaceList->numRows(); row++){			if (tblFaceList->isRowSelected(row)){				m_Config->moveFaceUp(gId, row);				tblFaceList->swapRows(row, row -1);				//tblFaceList->updateContents();				tblFaceList->clearSelection();				tblFaceList->selectRow(row - 1);				m_IsChanged = true;				break;			}		}	}}void CustomSmileyManager::slotDownSmiley( ){	if(!m_Config) return;	QListViewItem *item = lvGroups->selectedItem();	if(item){		int gId = m_Config->groupIndex( item->text( 0 ) );		if(gId < 0) return;		int row = 0;		for(row = 0; row < tblFaceList->numRows() - 1; row++){  // ignore the last row			if (tblFaceList->isRowSelected(row)) {				m_Config->moveFaceDown( gId, row);				tblFaceList->swapRows(row, row + 1);				//tblFaceList->updateContents();				tblFaceList->clearSelection();				tblFaceList->selectRow(row + 1);				m_IsChanged = true;				break;			}		}	}}void CustomSmileyManager::slotMoveToSmiley( ){	if(!m_Config) return;	QListViewItem *item = lvGroups->selectedItem();	if(item){		if(m_MoveToMenu){			disconnect(m_MoveToMenu, 0, 0, 0);			delete m_MoveToMenu;		}		m_MoveToMenu = new QPopupMenu(0,"moveto");		int currIndex = m_Config->groupIndex( item->text( 0 ) );		QStringList groups = m_Config->groupNames();		for( int i=0; i < (int)(groups.count()); i++){			if(i != currIndex )  // ignore the group we are operating on				m_MoveToMenu->insertItem(groups[i], i);		}		connect(m_MoveToMenu, SIGNAL(activated(int)), this, SLOT(slotMoveSmileyTo(int)));		QPoint p = btnMoveTo->mapToGlobal(QPoint(btnMoveTo->width()+1,0));		m_MoveToMenu->popup( p );	}}void CustomSmileyManager::slotMoveSmileyTo( int Id ){	if(!m_Config) return;	QListViewItem *item = lvGroups->selectedItem();	if(item){		QString srcGName = item->text(0); // selected group name		int gId = m_Config->groupIndex( srcGName );  // selected group index		QString destGName = m_Config->groupName( Id); // dest group name		if( (gId < 0) || (Id < 0) || (gId == Id) ) return;		QString dir = EvaMain::user->getSetting()->getCustomSmileyDir() + "/";		QString src = dir, dest = dir;		if(gId != 0) src += (srcGName + "/");		if(Id != 0 ) dest += (destGName + "/");		int row = 0;		bool moved = false;		// as removing row also clear the selection( or change to the last row),		// so we have to record the selection first		bool *flags = new bool[tblFaceList->numRows()];		for(row = 0; row < tblFaceList->numRows(); row++){			if (tblFaceList->isRowSelected(row))				flags[row] = true;			else				flags[row] = false;		}		for( row = tblFaceList->numRows() -1; row >= 0; row--){			if (flags[row]){				CustomFace face = m_Config->getFace( gId, row);				if(m_Config->moveFaceTo( gId, row, Id)){  // if update config true					EvaHelper::copyFile( src + face.fixed(), dest + face.fixed());					EvaHelper::copyFile( src + face.org(), dest + face.org());								QDir smileyDir(src);					smileyDir.remove( src + face.fixed());					smileyDir.remove( src +  + face.org());					// update display					tblFaceList->removeRow(row);					m_IsChanged = true;					moved = true;				}			}		}		delete []flags;		if(moved)			m_Config->saveXML(); // save config in case of some unexpected situations	}}

⌨️ 快捷键说明

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