void PublicHubs::slotContextMenu(){ QItemSelectionModel *sel_model = treeView->selectionModel(); QModelIndexList indexes = sel_model->selectedRows(0); if (indexes.isEmpty()) return; if (proxy) std::transform(indexes.begin(), indexes.end(), indexes.begin(), [&](QModelIndex i) { return proxy->mapToSource(i); }); WulforUtil *WU = WulforUtil::getInstance(); QMenu *m = new QMenu(); QAction *connect = new QAction(WU->getPixmap(WulforUtil::eiCONNECT), tr("Connect"), m); QAction *add_fav = new QAction(WU->getPixmap(WulforUtil::eiBOOKMARK_ADD), tr("Add to favorites"), m); QAction *copy = new QAction(WU->getPixmap(WulforUtil::eiEDITCOPY), tr("Copy &address to clipboard"), m); m->addActions(QList<QAction*>() << connect << add_fav << copy); QAction *ret = m->exec(QCursor::pos()); m->deleteLater(); if (ret == connect){ PublicHubItem * item = NULL; MainWindow *MW = MainWindow::getInstance(); foreach (const QModelIndex &i, indexes){ item = reinterpret_cast<PublicHubItem*>(i.internalPointer()); if (item) MW->newHubFrame(item->data(COLUMN_PHUB_ADDRESS).toString(), ""); item = NULL; }
void SettingsNotification::init(){ WulforUtil *WU = WulforUtil::getInstance(); {//Text checkBox_TRAY->setChecked(WBGET(WB_TRAY_ENABLED)); checkBox_TRAY->setEnabled(QSystemTrayIcon::isSystemTrayAvailable()); checkBox_EXIT_CONFIRM->setChecked(WBGET(WB_EXIT_CONFIRM)); groupBox->setChecked(WBGET(WB_NOTIFY_ENABLED)); unsigned emap = static_cast<unsigned>(WIGET(WI_NOTIFY_EVENTMAP)); checkBox_NICKSAY->setChecked(emap & Notification::NICKSAY); checkBox_ANY->setChecked(emap & Notification::ANY); checkBox_PM->setChecked(emap & Notification::PM); checkBox_TRDONE->setChecked(emap & Notification::TRANSFER); checkBox_MWACTIVE->setChecked(WBGET(WB_NOTIFY_SHOW_ON_ACTIVE)); checkBox_MWVISIBLE->setChecked(WBGET(WB_NOTIFY_CH_ICON_ALWAYS)); comboBox->setCurrentIndex(WIGET(WI_NOTIFY_MODULE)); } {//Sound QString encoded = WSGET(WS_NOTIFY_SOUNDS); QString decoded = QByteArray::fromBase64(encoded.toAscii()); QStringList sounds = decoded.split("\n"); if (sounds.size() == 3){ lineEdit_SNDNICKSAY->setText(sounds.at(0)); lineEdit_SNDPM->setText(sounds.at(1)); lineEdit_SNDTRDONE->setText(sounds.at(2)); } groupBox_SND->setChecked(WBGET(WB_NOTIFY_SND_ENABLED)); groupBox_SNDCMD->setChecked(WBGET(WB_NOTIFY_SND_EXTERNAL)); lineEdit_SNDCMD->setText(WSGET(WS_NOTIFY_SND_CMD)); unsigned emap = static_cast<unsigned>(WIGET(WI_NOTIFY_SNDMAP)); groupBox_NICK->setChecked(emap & Notification::NICKSAY); groupBox_PM->setChecked(emap & Notification::PM); groupBox_TR->setChecked(emap & Notification::TRANSFER); } toolButton_BRWNICK->setIcon(WU->getPixmap(WulforUtil::eiFOLDER_BLUE)); toolButton_BRWPM->setIcon(WU->getPixmap(WulforUtil::eiFOLDER_BLUE)); toolButton_BRWTR->setIcon(WU->getPixmap(WulforUtil::eiFOLDER_BLUE)); connect(toolButton_BRWNICK, SIGNAL(clicked()), this, SLOT(slotBrowseFile())); connect(toolButton_BRWPM, SIGNAL(clicked()), this, SLOT(slotBrowseFile())); connect(toolButton_BRWTR, SIGNAL(clicked()), this, SLOT(slotBrowseFile())); connect(pushButton_TESTNICKSAY, SIGNAL(clicked()), this, SLOT(slotTest())); connect(pushButton_TESTPM, SIGNAL(clicked()), this, SLOT(slotTest())); connect(pushButton_TESTTR, SIGNAL(clicked()), this, SLOT(slotTest())); connect(groupBox_SNDCMD, SIGNAL(toggled(bool)), this, SLOT(slotToggleSndCmd(bool))); }
void FavoriteHubs::on(FavoriteAdded, const FavoriteHubEntryPtr entry) noexcept{ QList<QVariant> data; WulforUtil *WU = WulforUtil::getInstance(); data << entry->getConnect() << _q(entry->getName()) << _q(entry->getDescription()) << _q(entry->getServer()) << _q(entry->getNick()) << _q(entry->getPassword()) << _q(entry->getUserDescription()) << WU->dcEnc2QtEnc(_q(entry->getEncoding())); model->addResult(data); }
void ADLS::slotContexMenu(const QPoint &){ QItemSelectionModel *s_model = treeView->selectionModel(); QModelIndexList list = s_model->selectedRows(0); WulforUtil *WU = WulforUtil::getInstance(); bool empty = list.empty(); QMenu *menu = new QMenu(this); if (empty){ QAction *add_new = new QAction(WU->getPixmap(WulforUtil::eiBOOKMARK_ADD), tr("Add new"), menu); menu->addAction(add_new); QAction *res = menu->exec(QCursor::pos()); if (res){ slotAdd_newButtonClicked(); } } else { ADLSItem *item = static_cast<ADLSItem*>(list.at(0).internalPointer()); if (!item){ delete menu; return; } QAction *add_new = new QAction(WU->getPixmap(WulforUtil::eiBOOKMARK_ADD), tr("Add new"), menu); QAction *change = new QAction(WU->getPixmap(WulforUtil::eiEDIT), tr("Change"), menu); QAction *remove = new QAction(WU->getPixmap(WulforUtil::eiEDITDELETE), tr("Delete"), menu); QAction *sep1 = new QAction(menu); sep1->setSeparator(true); menu->addActions(QList<QAction*>() << change << remove << sep1 << add_new); QAction *res = menu->exec(QCursor::pos()); if (res == change) slotChangeButtonClicked(); else if (res == remove) slotRemoveButtonClicked(); else if (res == add_new) slotAdd_newButtonClicked(); } delete menu; }
void FavoriteHubs::updateItem(FavoriteHubItem *item, StrMap &map){ if (!item) return; WulforUtil *WU = WulforUtil::getInstance(); item->updateColumn(COLUMN_HUB_ADDRESS, map["ADDR"]); item->updateColumn(COLUMN_HUB_AUTOCONNECT, map["AUTO"]); item->updateColumn(COLUMN_HUB_DESC, map["DESC"]); if (WU->encodings().contains(map["ENC"].toString())) item->updateColumn(COLUMN_HUB_ENCODING, map["ENC"]); else item->updateColumn(COLUMN_HUB_ENCODING, WulforUtil::getInstance()->dcEnc2QtEnc(map["ENC"].toString())); item->updateColumn(COLUMN_HUB_NAME, map["NAME"]); item->updateColumn(COLUMN_HUB_NICK, map["NICK"]); item->updateColumn(COLUMN_HUB_USERDESC, map["UDESC"]); }
void FavoriteHubs::getParams(const FavoriteHubEditor &editor, StrMap &map){ WulforUtil *WU = WulforUtil::getInstance(); map["NAME"] = editor.lineEdit_NAME->text(); map["ADDR"] = editor.lineEdit_ADDRESS->text(); map["DESC"] = editor.lineEdit_DESC->text(); map["AUTO"] = editor.checkBox_AUTOCONNECT->isChecked(); map["PASS"] = editor.lineEdit_PASSWORD->text(); map["IIP"] = editor.checkBox_USEINTERNET->isChecked(); map["DCHAT"] = editor.checkBox_DISABLECHAT->isChecked(); if (isValidIP(editor.lineEdit_IP->text()) && editor.checkBox_IP->isChecked()) map["IP"] = editor.lineEdit_IP->text(); else map["IP"] = ""; map["OVERTAG"] = editor.checkBox_CID->isChecked(); if (editor.comboBox_CID->currentIndex() != 0 && editor.checkBox_CID->isChecked()) map["TAG"] = editor.comboBox_CID->currentText(); else map["TAG"] = editor.comboBox_CID->itemText(0); if (editor.checkBox_NICK->isChecked() && !editor.lineEdit_NICK->text().isEmpty()) map["NICK"] = editor.lineEdit_NICK->text(); else map["NICK"] = ""; if (editor.comboBox_ENC->currentText() != tr("System default")){ QString enc = WU->qtEnc2DcEnc(editor.comboBox_ENC->currentText()); enc = enc.left(enc.indexOf(" ")); map["ENC"] = enc; } else map["ENC"] = WU->qtEnc2DcEnc(WSGET(WS_DEFAULT_LOCALE)); map["UDESC"] = editor.lineEdit_USERDESC->text(); map["MODE"] = editor.comboBox_MODE->currentIndex(); map["SINT"] = editor.spinBox_MINSEARCH_INTERVAL->value(); }
void ADLS::init(){ model = new ADLSModel(); setUnload(false); treeView->setModel(model); ADLSearchManager::SearchCollection& collection = ADLSearchManager::getInstance()->collection; for (auto i = collection.begin(); i != collection.end(); ++i) { ADLSearch &search = *i; addItem(search); } treeView->setRootIsDecorated(false); treeView->setContextMenuPolicy(Qt::CustomContextMenu); treeView->header()->setContextMenuPolicy(Qt::CustomContextMenu); treeView->viewport()->setAcceptDrops(false); // temporary treeView->setDragEnabled(false); // temporary treeView->setAcceptDrops(false); // temporary //treeView->setDragDropMode(QAbstractItemView::InternalMove); WulforUtil *WU = WulforUtil::getInstance(); add_newButton->setIcon(WU->getPixmap(WulforUtil::eiBOOKMARK_ADD)); changeButton->setIcon(WU->getPixmap(WulforUtil::eiEDIT)); removeButton->setIcon(WU->getPixmap(WulforUtil::eiEDITDELETE)); upButton->setIcon(WU->getPixmap(WulforUtil::eiUP)); downButton->setIcon(WU->getPixmap(WulforUtil::eiDOWN)); line_2->hide(); upButton->hide(); downButton->hide(); load(); int row_num = model->rowCount(); if (row_num == 0){ changeButton->setEnabled(false); removeButton->setEnabled(false); upButton->setEnabled(false); downButton->setEnabled(false); } else if(row_num == 1){ upButton->setEnabled(false); downButton->setEnabled(false); } connect(treeView, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(slotContexMenu(const QPoint&))); connect(treeView, SIGNAL(clicked(QModelIndex)), this, SLOT(slotClicked(QModelIndex))); connect(treeView->header(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotHeaderMenu())); connect(treeView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(slotDblClicked())); connect(WulforSettings::getInstance(), SIGNAL(strValueChanged(QString,QString)), this, SLOT(slotSettingsChanged(QString,QString))); connect(add_newButton, SIGNAL(clicked()), this, SLOT(slotAdd_newButtonClicked())); connect(changeButton, SIGNAL(clicked()), this, SLOT(slotChangeButtonClicked())); connect(removeButton, SIGNAL(clicked()), this, SLOT(slotRemoveButtonClicked())); connect(upButton, SIGNAL(clicked()), this, SLOT(slotUpButtonClicked())); connect(downButton, SIGNAL(clicked()), this, SLOT(slotDownButtonClicked())); }
void SettingsSharing::init(){ WulforUtil *WU = WulforUtil::getInstance(); toolButton_ADD->setIcon(WU->getPixmap(WulforUtil::eiBOOKMARK_ADD)); toolButton_EDIT->setIcon(WU->getPixmap(WulforUtil::eiEDIT)); toolButton_DELETE->setIcon(WU->getPixmap(WulforUtil::eiEDITDELETE)); toolButton_BROWSE->setIcon(WU->getPixmap(WulforUtil::eiFOLDER_BLUE)); toolButton_RECREATE->setIcon(WU->getPixmap(WulforUtil::eiRELOAD)); checkBox_SHAREHIDDEN->setChecked(BOOLSETTING(SHARE_HIDDEN)); checkBox_SHARE_TEMP_FILES->setChecked(BOOLSETTING(SHARE_TEMP_FILES)); checkBox_FOLLOW->setChecked(BOOLSETTING(FOLLOW_LINKS)); checkBox_USE_ADL_ONLY_OWN_LIST->setChecked(BOOLSETTING(USE_ADL_ONLY_OWN_LIST)); spinBox_UPLOAD->setValue(SETTING(SLOTS_PRIMARY)); spinBox_MAXHASHSPEED->setValue(SETTING(MAX_HASH_SPEED)); spinBox_EXTRA->setValue(SETTING(MIN_UPLOAD_SPEED)); spinBox_REFRESH_TIME->setValue(SETTING(AUTO_REFRESH_TIME)); spinBox_HASHING_START_DELAY->setValue(SETTING(HASHING_START_DELAY)); checkBox_AUTOREMOVE->setChecked(WBGET(WB_APP_REMOVE_NOT_EX_DIRS)); checkBox_FASTHASH->setChecked(BOOLSETTING(FAST_HASH)); groupBox_FASTHASH->setEnabled(BOOLSETTING(FAST_HASH)); listWidget_SKIPLIST->addItems(_q(SETTING(SKIPLIST_SHARE)).split('|', QString::SkipEmptyParts)); label_TOTALSHARED->setText(tr("Total shared: %1") .arg(WulforUtil::formatBytes(ShareManager::getInstance()->getShareSize()))); checkBox_SIMPLE_SHARE_MODE->setChecked(WBGET(WB_SIMPLE_SHARE_MODE)); treeWidget_SIMPLE_MODE->setVisible(WBGET(WB_SIMPLE_SHARE_MODE)); treeWidget_SIMPLE_MODE->setContextMenuPolicy(Qt::CustomContextMenu); treeView->setHidden(WBGET(WB_SIMPLE_SHARE_MODE)); checkBox_MAPNORESERVE->setChecked(SETTING(HASH_BUFFER_NORESERVE)); checkBox_MAPPOPULATE->setChecked(SETTING(HASH_BUFFER_POPULATE)); checkBox_MAPPRIVATE->setChecked(SETTING(HASH_BUFFER_PRIVATE)); int ind = comboBox_BUFSIZE->findText(QString().setNum(SETTING(HASH_BUFFER_SIZE_MB))); if (ind >= 0) comboBox_BUFSIZE->setCurrentIndex(ind); connect(toolButton_ADD, SIGNAL(clicked()), this, SLOT(slotAddExeption())); connect(toolButton_EDIT, SIGNAL(clicked()), this, SLOT(slotEditExeption())); connect(toolButton_DELETE, SIGNAL(clicked()), this, SLOT(slotDeleteExeption())); connect(toolButton_BROWSE, SIGNAL(clicked()), this, SLOT(slotAddDirExeption())); connect(listWidget_SKIPLIST, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(slotEditExeption())); connect(toolButton_RECREATE, SIGNAL(clicked()), this, SLOT(slotRecreateShare())); connect(checkBox_SHAREHIDDEN, SIGNAL(clicked(bool)), this, SLOT(slotShareHidden(bool))); connect(treeView->header(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotHeaderMenu())); connect(treeWidget_SIMPLE_MODE, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint))); connect(checkBox_SIMPLE_SHARE_MODE, SIGNAL(clicked()), this, SLOT(slotSimpleShareModeChanged())); slotSimpleShareModeChanged(); }
void FavoriteHubs::init(){ model = new FavoriteHubModel(); setUnload(false); treeView->setModel(model); fakeNMDCTags = QStringList(); fakeADCTags = QStringList(); fakeNMDCTags << QString("%1").arg(fullVersionString) << "++ V:0.782" << "++ V:0.791" << "StrgDC++ V:2.42" << "ApexDC++ V:1.3.6" << "ApexDC++ V:1.5.1" << "FlylinkDC++ V:r500" << "FlylinkDC++ V:r500-x64" << "FlylinkDC++ V:r501-beta60" << "HomeDC++ V:2.22" << "FakeDC++ V:1.3"; fakeADCTags << QString("%1").arg(fullADCVersionString) << "++ 0.782" << "++ 0.791" << "StrgDC++ 2.42" << "ApexDC++ 1.3.6" << "ApexDC++ 1.5.1" << "FlylinkDC++ r500" << "FlylinkDC++ r500-x64" << "FlylinkDC++ r501-beta60" << "HomeDC++ 2.22" << "FakeDC++ 1.3"; const FavoriteHubEntryList& fl = FavoriteManager::getInstance()->getFavoriteHubs(); for(FavoriteHubEntryList::const_iterator i = fl.begin(); i != fl.end(); ++i) { FavoriteHubEntry* entry = *i; QList<QVariant> data; data << entry->getConnect() << _q(entry->getName()) << _q(entry->getDescription()) << _q(entry->getServer()) << _q(entry->getNick()) << _q(entry->getPassword()) << _q(entry->getUserDescription()) << WulforUtil::getInstance()->dcEnc2QtEnc(_q(entry->getEncoding())); model->addResult(data); } treeView->setRootIsDecorated(false); treeView->setContextMenuPolicy(Qt::CustomContextMenu); treeView->header()->setContextMenuPolicy(Qt::CustomContextMenu); treeView->viewport()->setAcceptDrops(false); // temporary treeView->setDragEnabled(false); // temporary treeView->setAcceptDrops(false); // temporary WulforUtil *WU = WulforUtil::getInstance(); add_newButton->setIcon(WU->getPixmap(WulforUtil::eiBOOKMARK_ADD)); changeButton->setIcon(WU->getPixmap(WulforUtil::eiEDIT)); removeButton->setIcon(WU->getPixmap(WulforUtil::eiEDITDELETE)); connectButton->setIcon(WU->getPixmap(WulforUtil::eiCONNECT)); load(); int row_num = model->rowCount(); if (row_num == 0){ changeButton->setEnabled(false); removeButton->setEnabled(false); connectButton->setEnabled(false); } connect(treeView, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(slotContexMenu(const QPoint&))); connect(treeView, SIGNAL(clicked(QModelIndex)), this, SLOT(slotClicked(QModelIndex))); connect(treeView->header(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotHeaderMenu())); connect(treeView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(slotDblClicked())); connect(add_newButton, SIGNAL(clicked()), this, SLOT(slotAdd_newButtonClicked())); connect(changeButton, SIGNAL(clicked()), this, SLOT(slotChangeButtonClicked())); connect(removeButton, SIGNAL(clicked()), this, SLOT(slotRemoveButtonClicked())); connect(connectButton, SIGNAL(clicked()), this, SLOT(slotConnectButtonClicked())); connect(WulforSettings::getInstance(), SIGNAL(strValueChanged(QString,QString)), this, SLOT(slotSettingsChanged(QString,QString))); ArenaWidget::setState( ArenaWidget::Flags(ArenaWidget::state() | ArenaWidget::Singleton | ArenaWidget::Hidden) ); }
void FavoriteHubs::slotContexMenu(const QPoint &){ QItemSelectionModel *s_model = treeView->selectionModel(); QModelIndexList list = s_model->selectedRows(0); WulforUtil *WU = WulforUtil::getInstance(); bool empty = list.empty(); QMenu *menu = new QMenu(this); if (empty){ QAction *add_new = new QAction(WU->getPixmap(WulforUtil::eiBOOKMARK_ADD), tr("Add new"), menu); menu->addAction(add_new); QAction *res = menu->exec(QCursor::pos()); if (res){ FavoriteHubEditor editor; initHubEditor(editor); if (editor.exec() == QDialog::Accepted){ StrMap map; FavoriteHubEntry entry; getParams(editor, map); updateEntry(entry, map); FavoriteManager::getInstance()->addFavorite(entry); } } } else { FavoriteHubItem *item = static_cast<FavoriteHubItem*>(list.at(0).internalPointer()); if (!item){ delete menu; return; } QAction *add_new = new QAction(WU->getPixmap(WulforUtil::eiBOOKMARK_ADD), tr("Add new"), menu); QAction *change = new QAction(WU->getPixmap(WulforUtil::eiEDIT), tr("Change"), menu); QAction *remove = new QAction(WU->getPixmap(WulforUtil::eiEDITDELETE), tr("Delete"), menu); QAction *conn = new QAction(WU->getPixmap(WulforUtil::eiCONNECT), tr("Connect"), menu); QAction *sep1 = new QAction(menu); QAction *sep2 = new QAction(menu); sep1->setSeparator(true); sep2->setSeparator(true); menu->addActions(QList<QAction*>() << change << remove << sep1 << conn << sep2 << add_new); QAction *res = menu->exec(QCursor::pos()); if (res == change) slotChangeButtonClicked(); else if (res == remove) slotRemoveButtonClicked(); else if (res == conn) slotDblClicked(); else if (res == add_new) slotAdd_newButtonClicked(); } delete menu; }
void IPFilterFrame::slotTreeViewContextMenu(QPoint){ if (!IPFilter::getInstance() || !model) return; WulforUtil *WU = WulforUtil::getInstance(); eTableAction act = etaACPT; eDIRECTION direction = eDIRECTION_OUT; QString str_ip, str_d; QModelIndexList mindexes = treeView_RULES->selectionModel()->selectedIndexes(); if (mindexes.size() == 0){ return; } IPFilterModelItem *elem = (IPFilterModelItem*)mindexes.at(0).internalPointer();//Selection mode: single item if (!elem) return; str_ip = elem->data(COLUMN_RULE_NAME).toString(); str_d = elem->data(COLUMN_RULE_DIRECTION).toString(); if (str_ip.indexOf("!") == 0){ act = etaDROP; str_ip.replace("!", ""); } if (str_d == "BOTH") direction = eDIRECTION_BOTH; else if (str_d == "IN") direction = eDIRECTION_IN; QMenu *m = new QMenu(this); QMenu *ch_d = new QMenu(this); ch_d->setTitle(tr("Change rule direction")); QList<QAction*> directions; directions << (ch_d->addAction(QIcon(), "BOTH")); directions << (ch_d->addAction(QIcon(), "IN")); directions << (ch_d->addAction(QIcon(), "OUT")); m->addMenu(ch_d); QAction *ch = m->addAction(QIcon(), tr("Change IP/Mask")); QAction *del = m->addAction(WU->getPixmap(WulforUtil::eiEDITDELETE), tr("Delete rule")); QAction *result = m->exec(QCursor::pos()); if (!result) return; if (directions.contains(result)){ QString txt = result->text(); eDIRECTION d = eDIRECTION_OUT; if (txt == "BOTH") d = eDIRECTION_BOTH; else if (txt == "IN") d = eDIRECTION_IN; if (d != direction){ IPFilter::getInstance()->changeRuleDirection(str_ip, d, act); elem->updateColumn(COLUMN_RULE_DIRECTION, txt); } } else if (result == del){ IPFilter::getInstance()->remFromRules(str_ip, act); model->removeItem(elem); } else if (result == ch){ quint32 ip, mask, old_ip, old_mask; eTableAction act, old_act; bool ok = false; QString input = QInputDialog::getText(this, tr("Enter new rule"), tr("Rule:"), QLineEdit::Normal, elem->data(COLUMN_RULE_NAME).toString(), &ok); if (ok && IPFilter::ParseString(input, ip, mask, act) && IPFilter::ParseString(elem->data(COLUMN_RULE_NAME).toString(), old_ip, old_mask, old_act)) { if ((ip != old_ip) || (mask != old_mask) || (act != old_act)){ const QIPHash &hash = IPFilter::getInstance()->getHash(); QIPHash::const_iterator it = hash.find(old_ip); IPFilterElem *el = NULL; while (it != hash.end() && it.key() == old_ip){ IPFilterElem *t = it.value(); if (t->action == old_act && t->mask == old_mask){ el = t; break; } ++it; } if (el){ el->action = act; el->ip = ip; el->mask = mask; QString prefix = (act == etaDROP?"!":""); QString str_ip = IPFilter::Uint32ToString(ip); QString str_mask = QString().setNum(IPFilter::MaskToCIDR(mask)); elem->updateColumn(COLUMN_RULE_NAME, prefix+str_ip+"/"+str_mask); } } } } model->repaint(); delete m; }
void SettingsGUI::init() { { //Basic tab WulforUtil *WU = WulforUtil::getInstance(); QStringList styles = QStyleFactory::keys(); comboBox_THEMES->addItem(tr("Default (need to restart)")); for (const QString &s : styles) comboBox_THEMES->addItem(s); comboBox_THEMES->setCurrentIndex(styles.indexOf(WSGET(WS_APP_THEME)) >= 0? (styles.indexOf(WSGET(WS_APP_THEME))+1) : 0); if (WSGET(WS_APP_FONT).isEmpty()) { lineEdit_APPFONT->setText(qApp->font().toString()); WSSET(WS_APP_FONT, qApp->font().toString()); } else lineEdit_APPFONT->setText(WSGET(WS_APP_FONT)); int i = 0; int k = -1; #if !defined(Q_OS_WIN) QDir translationsDir(CLIENT_TRANSLATIONS_DIR); #else QDir translationsDir(qApp->applicationDirPath()+QDir::separator()+CLIENT_TRANSLATIONS_DIR); #endif QMap<QString, QString> langNames; langNames["en.qm"] = tr("English"); langNames["ru.qm"] = tr("Russian"); langNames["be.qm"] = tr("Belarusian"); langNames["hu.qm"] = tr("Hungarian"); langNames["fr.qm"] = tr("French"); langNames["pl.qm"] = tr("Polish"); langNames["pt_BR.qm"] = tr("Portuguese (Brazil)"); langNames["sr.qm"] = tr("Serbian (Cyrillic)"); langNames["*****@*****.**"] = tr("Serbian (Latin)"); langNames["uk.qm"] = tr("Ukrainian"); langNames["es.qm"] = tr("Spanish"); langNames["eu.qm"] = tr("Basque"); langNames["bg.qm"] = tr("Bulgarian"); langNames["sk.qm"] = tr("Slovak"); langNames["cs.qm"] = tr("Czech"); langNames["de.qm"] = tr("German"); langNames["el.qm"] = tr("Greek"); langNames["it.qm"] = tr("Italian"); langNames["vi.qm"] = tr("Vietnamese"); langNames["zh_CN.qm"] = tr("Chinese (China)"); langNames["sv_SE.qm"] = tr("Swedish (Sweden)"); QString full_path; QString lang; for (const auto &f : translationsDir.entryList(QDir::Files | QDir::NoSymLinks)) { full_path = QDir::toNativeSeparators( translationsDir.filePath(f) ); lang = langNames[f]; if (!lang.isEmpty()) { comboBox_LANGS->addItem(lang, full_path); if (WSGET(WS_TRANSLATION_FILE).endsWith(f)) k = i; i++; } } comboBox_LANGS->setCurrentIndex(k); #if !defined(Q_OS_WIN) QString users = CLIENT_ICONS_DIR "/user/"; #else QString users = qApp->applicationDirPath()+QDir::separator()+CLIENT_ICONS_DIR "/user/"; #endif i = 0; k = -1; for (const QString &f : QDir(users).entryList(QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot)) { if (!f.isEmpty()) { comboBox_USERS->addItem(f); if (f == WSGET(WS_APP_USERTHEME)) k = i; i++; } } comboBox_USERS->setCurrentIndex(k); #if !defined(Q_OS_WIN) QString icons = CLIENT_ICONS_DIR "/appl/"; #else QString icons = qApp->applicationDirPath()+QDir::separator()+CLIENT_ICONS_DIR "/appl/"; #endif i = 0; k = -1; for (const QString &f : QDir(icons).entryList(QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot)) { if (!f.isEmpty()) { comboBox_ICONS->addItem(f); if (f == WSGET(WS_APP_ICONTHEME)) k = i; i++; } } comboBox_ICONS->setCurrentIndex(k); #if !defined(Q_OS_WIN) QString emot = CLIENT_DATA_DIR "/emoticons/"; #else QString emot = qApp->applicationDirPath()+QDir::separator()+CLIENT_DATA_DIR "/emoticons/"; #endif comboBox_EMOT->setCurrentIndex(0); i = 0; for (const QString &f : QDir(emot).entryList(QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot)) { if (!f.isEmpty()) { comboBox_EMOT->addItem(f); if (f == WSGET(WS_APP_EMOTICON_THEME)) comboBox_EMOT->setCurrentIndex(i); i++; } } lineEdit_LANGFILE->setText(WSGET(WS_TRANSLATION_FILE)); toolButton_LANGBROWSE->setIcon(WU->getPixmap(WulforUtil::eiFOLDER_BLUE)); if (WBGET(WB_MAINWINDOW_REMEMBER)) radioButton_REMEMBER->setChecked(true); else if (WBGET(WB_MAINWINDOW_HIDE)) radioButton_HIDE->setChecked(true); else radioButton_SHOW->setChecked(true); groupBox_TRAY->setChecked(WBGET(WB_TRAY_ENABLED)); groupBox_TRAY->setEnabled(QSystemTrayIcon::isSystemTrayAvailable()); if (WBGET(WB_MAINWINDOW_USE_SIDEBAR)) comboBox_TABBAR->setCurrentIndex(2); else if (WBGET(WB_MAINWINDOW_USE_M_TABBAR)) comboBox_TABBAR->setCurrentIndex(1); else comboBox_TABBAR->setCurrentIndex(0); #if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) checkBox_ICONTHEME->setChecked(WBGET("app/use-icon-theme", false)); #endif checkBox_HIDE_ICONS_IN_MENU->setChecked(WBGET("mainwindow/dont-show-icons-in-menus", false)); // Hide options which do not work in Mac OS X, MS Windows or Haiku: #if defined (Q_OS_WIN) || defined (__HAIKU__) checkBox_ICONTHEME->hide(); #elif defined(Q_OS_MAC) checkBox_ICONTHEME->hide(); groupBox_TRAY->hide(); #endif } { //Chat tab checkBox_CHATJOINS->setChecked(WBGET(WB_CHAT_SHOW_JOINS)); checkBox_JOINSFAV->setChecked(WBGET(WB_CHAT_SHOW_JOINS_FAV)); checkBox_CHATHIDDEN->setChecked(WBGET(WB_SHOW_HIDDEN_USERS)); checkBox_IGNOREPMHUB->setChecked(BOOLSETTING(IGNORE_HUB_PMS)); checkBox_IGNOREPMBOT->setChecked(BOOLSETTING(IGNORE_BOT_PMS)); checkBox_REDIRECTPMBOT->setChecked(WBGET(WB_CHAT_REDIRECT_BOT_PMS)); checkBox_REDIRECT_UNREAD->setChecked(WBGET("hubframe/redirect-pm-to-main-chat", false)); checkBox_KEEPFOCUS->setChecked(WBGET(WB_CHAT_KEEPFOCUS)); checkBox_UNREADEN_DRAW_LINE->setChecked(WBGET("hubframe/unreaden-draw-line", true)); checkBox_USE_CTRL_ENTER->setChecked(WBGET(WB_USE_CTRL_ENTER)); checkBox_ROTATING->setChecked(WBGET(WB_CHAT_ROTATING_MSGS)); checkBox_EMOT->setChecked(WBGET(WB_APP_ENABLE_EMOTICON)); checkBox_EMOTFORCE->setChecked(WBGET(WB_APP_FORCE_EMOTICONS)); checkBox_SMILEPANEL->setChecked(WBGET(WB_CHAT_USE_SMILE_PANEL)); checkBox_HIDESMILEPANEL->setChecked(WBGET(WB_CHAT_HIDE_SMILE_PANEL)); } { //Chat (extended) tab comboBox_DBL_CLICK->setCurrentIndex(WIGET(WI_CHAT_DBLCLICK_ACT)); comboBox_MDL_CLICK->setCurrentIndex(WIGET(WI_CHAT_MDLCLICK_ACT)); comboBox_DEF_MAGNET_ACTION->setCurrentIndex(WIGET(WI_DEF_MAGNET_ACTION)); comboBox_APP_UNIT_BASE->setCurrentIndex(SETTING(APP_UNIT_BASE)); checkBox_HIGHLIGHTFAVS->setChecked(WBGET(WB_CHAT_HIGHLIGHT_FAVS)); checkBox_CHAT_SHOW_IP->setChecked(BOOLSETTING(USE_IP)); checkBox_CHAT_SHOW_CC->setChecked(BOOLSETTING(GET_USER_COUNTRY)); checkBox_BB_CODE->setChecked(WBGET("hubframe/use-bb-code", false)); lineEdit_TIMESTAMP->setText(WSGET(WS_CHAT_TIMESTAMP)); spinBox_OUT_IN_HIST->setValue(WIGET(WI_OUT_IN_HIST)); spinBox_PARAGRAPHS->setValue(WIGET(WI_CHAT_MAXPARAGRAPHS)); comboBox_CHAT_SEPARATOR->setCurrentIndex(comboBox_CHAT_SEPARATOR->findText(WSGET(WS_CHAT_SEPARATOR))); } { //Color tab QColor c; QPixmap p(10, 10); c.setNamedColor(WSGET(WS_CHAT_LOCAL_COLOR)); p.fill(c); new QListWidgetItem(p, tr("Local user"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_OP_COLOR)); p.fill(c); new QListWidgetItem(p, tr("Operator"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_BOT_COLOR)); p.fill(c); new QListWidgetItem(p, tr("Bot"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_PRIV_LOCAL_COLOR)); p.fill(c); new QListWidgetItem(p, tr("Private: local user"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_PRIV_USER_COLOR)); p.fill(c); new QListWidgetItem(p, tr("Private: user"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_SAY_NICK)); p.fill(c); new QListWidgetItem(p, tr("Chat: Say nick"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_STAT_COLOR)); p.fill(c); new QListWidgetItem(p, tr("Status"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_USER_COLOR)); p.fill(c); new QListWidgetItem(p, tr("User"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_FAVUSER_COLOR)); p.fill(c); new QListWidgetItem(p, tr("Favorite User"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_TIME_COLOR)); p.fill(c); new QListWidgetItem(p, tr("Time stamp"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_MSG_COLOR)); p.fill(c); new QListWidgetItem(p, tr("Message"), listWidget_CHATCOLOR); c.setNamedColor(WSGET(WS_CHAT_FIND_COLOR)); h_color = c; c.setAlpha(WIGET(WI_CHAT_FIND_COLOR_ALPHA)); p.fill(c); toolButton_H_COLOR->setIcon(p); c.setNamedColor(WSGET(WS_APP_SHARED_FILES_COLOR)); shared_files_color = c; c.setAlpha(WIGET(WI_APP_SHARED_FILES_ALPHA)); p.fill(c); toolButton_SHAREDFILES->setIcon(p); downloads_clr = qvariant_cast<QColor>(WVGET("transferview/download-bar-color", QColor())); uploads_clr = qvariant_cast<QColor>(WVGET("transferview/upload-bar-color", QColor())); if (downloads_clr.isValid()) { c = downloads_clr; p.fill(c); toolButton_DOWNLOADSCLR->setIcon(p); } if (uploads_clr.isValid()) { c = uploads_clr; p.fill(c); toolButton_UPLOADSCLR->setIcon(p); } checkBox_CHAT_BACKGROUND_COLOR->setChecked(WBGET("hubframe/change-chat-background-color", false)); toolButton_CHAT_BACKGROUND_COLOR->setEnabled(WBGET("hubframe/change-chat-background-color", false)); if (!WSGET("hubframe/chat-background-color", "").isEmpty()) { c.setNamedColor(WSGET("hubframe/chat-background-color")); chat_background_color = c; c.setAlpha(255); p.fill(c); toolButton_CHAT_BACKGROUND_COLOR->setIcon(p); } horizontalSlider_H_COLOR->setValue(WIGET(WI_CHAT_FIND_COLOR_ALPHA)); horizontalSlider_SHAREDFILES->setValue(WIGET(WI_APP_SHARED_FILES_ALPHA)); } { // Fonts tab CustomFontModel *model = new CustomFontModel(this); tableView->setModel(model); tableView->horizontalHeader()->restoreState(QByteArray::fromBase64(WSGET(WS_SETTINGS_GUI_FONTS_STATE).toUtf8())); connect(tableView, SIGNAL(doubleClicked(QModelIndex)), model, SLOT(itemDoubleClicked(QModelIndex))); connect(this, SIGNAL(saveFonts()), model, SLOT(ok())); } connect(pushButton_TEST, SIGNAL(clicked()), this, SLOT(slotTestAppTheme())); connect(comboBox_THEMES, SIGNAL(activated(int)), this, SLOT(slotThemeChanged())); connect(listWidget_CHATCOLOR, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(slotChatColorItemClicked(QListWidgetItem*))); connect(toolButton_APPFONTBROWSE, SIGNAL(clicked()), this, SLOT(slotBrowseFont())); connect(toolButton_LANGBROWSE, SIGNAL(clicked()), this, SLOT(slotBrowseLng())); connect(comboBox_LANGS, SIGNAL(activated(int)), this, SLOT(slotLngIndexChanged(int))); connect(comboBox_USERS, SIGNAL(activated(int)), this, SLOT(slotUsersChanged())); connect(comboBox_ICONS, SIGNAL(activated(int)), this, SLOT(slotIconsChanged())); connect(toolButton_H_COLOR, SIGNAL(clicked()), this, SLOT(slotGetColor())); connect(toolButton_SHAREDFILES, SIGNAL(clicked()), this, SLOT(slotGetColor())); connect(toolButton_CHAT_BACKGROUND_COLOR, SIGNAL(clicked()), this, SLOT(slotGetColor())); connect(toolButton_DOWNLOADSCLR, SIGNAL(clicked()), this, SLOT(slotGetColor())); connect(toolButton_UPLOADSCLR, SIGNAL(clicked()), this, SLOT(slotGetColor())); connect(pushButton_RESET, SIGNAL(clicked()), this, SLOT(slotResetTransferColors())); connect(horizontalSlider_H_COLOR, SIGNAL(valueChanged(int)), this, SLOT(slotSetTransparency(int))); connect(horizontalSlider_SHAREDFILES, SIGNAL(valueChanged(int)), this, SLOT(slotSetTransparency(int))); }
void SettingsNotification::init(){ WulforUtil *WU = WulforUtil::getInstance(); {//Text checkBox_EXIT_CONFIRM->setChecked(WBGET(WB_EXIT_CONFIRM)); groupBox->setChecked(WBGET(WB_NOTIFY_ENABLED)); unsigned emap = static_cast<unsigned>(WIGET(WI_NOTIFY_EVENTMAP)); checkBox_NICKSAY->setChecked(emap & Notification::NICKSAY); checkBox_ANY->setChecked(emap & Notification::ANY); checkBox_PM->setChecked(emap & Notification::PM); checkBox_TRDONE->setChecked(emap & Notification::TRANSFER); checkBox_FAVJOIN->setChecked(emap & Notification::FAVORITE); checkBox_MWACTIVE->setChecked(WBGET(WB_NOTIFY_SHOW_ON_ACTIVE)); checkBox_MWVISIBLE->setChecked(WBGET(WB_NOTIFY_SHOW_ON_VISIBLE)); checkBox_CHICON->setChecked(WBGET(WB_NOTIFY_CH_ICON_ALWAYS)); if (WBGET(WB_NOTIFY_SHOW_ON_ACTIVE)){ checkBox_MWVISIBLE->setChecked(true); checkBox_MWVISIBLE->setDisabled(true); } comboBox->setCurrentIndex(WIGET(WI_NOTIFY_MODULE)); } {//Sound QString encoded = WSGET(WS_NOTIFY_SOUNDS); QString decoded = QByteArray::fromBase64(encoded.toAscii()); QStringList sounds = decoded.split("\n"); if (sounds.size() == 4){ lineEdit_SNDNICKSAY->setText(sounds.at(0)); lineEdit_SNDPM->setText(sounds.at(1)); lineEdit_SNDTRDONE->setText(sounds.at(2)); lineEdit_FAV->setText(sounds.at(3)); } groupBox_SND->setChecked(WBGET(WB_NOTIFY_SND_ENABLED)); groupBox_SNDCMD->setChecked(WBGET(WB_NOTIFY_SND_EXTERNAL)); lineEdit_SNDCMD->setText(WSGET(WS_NOTIFY_SND_CMD)); unsigned emap = static_cast<unsigned>(WIGET(WI_NOTIFY_SNDMAP)); groupBox_NICK->setChecked(emap & Notification::NICKSAY); groupBox_PM->setChecked(emap & Notification::PM); groupBox_TR->setChecked(emap & Notification::TRANSFER); groupBox_FAV->setChecked(emap & Notification::FAVORITE); checkBox_ACTIVEPM->setChecked(WBGET("notification/play-sound-with-active-pm", true)); } toolButton_BRWNICK->setIcon(WU->getPixmap(WulforUtil::eiFOLDER_BLUE)); toolButton_BRWPM->setIcon(WU->getPixmap(WulforUtil::eiFOLDER_BLUE)); toolButton_BRWTR->setIcon(WU->getPixmap(WulforUtil::eiFOLDER_BLUE)); toolButton_BRWFAV->setIcon(WU->getPixmap(WulforUtil::eiFOLDER_BLUE)); connect(toolButton_BRWNICK, SIGNAL(clicked()), this, SLOT(slotBrowseFile())); connect(toolButton_BRWPM, SIGNAL(clicked()), this, SLOT(slotBrowseFile())); connect(toolButton_BRWTR, SIGNAL(clicked()), this, SLOT(slotBrowseFile())); connect(toolButton_BRWFAV, SIGNAL(clicked()), this, SLOT(slotBrowseFile())); connect(pushButton_TESTNICKSAY, SIGNAL(clicked()), this, SLOT(slotTest())); connect(pushButton_TESTPM, SIGNAL(clicked()), this, SLOT(slotTest())); connect(pushButton_TESTTR, SIGNAL(clicked()), this, SLOT(slotTest())); connect(pushButton_TESTFAV, SIGNAL(clicked()), this, SLOT(slotTest())); connect(groupBox_SNDCMD, SIGNAL(toggled(bool)), this, SLOT(slotToggleSndCmd(bool))); #ifndef DBUS_NOTIFY frame->setVisible(false); #endif }
void PublicHubs::slotContextMenu(){ QItemSelectionModel *sel_model = treeView->selectionModel(); QModelIndexList indexes = sel_model->selectedRows(0); if (indexes.isEmpty()) return; if (proxy) std::transform(indexes.begin(), indexes.end(), indexes.begin(), [&](QModelIndex i) { return proxy->mapToSource(i); }); WulforUtil *WU = WulforUtil::getInstance(); QMenu *m = new QMenu(); QAction *connect = new QAction(WU->getPixmap(WulforUtil::eiCONNECT), tr("Connect"), m); QAction *add_fav = new QAction(WU->getPixmap(WulforUtil::eiBOOKMARK_ADD), tr("Add to favorites"), m); QAction *copy = new QAction(WU->getPixmap(WulforUtil::eiEDITCOPY), tr("Copy &address to clipboard"), m); m->addActions(QList<QAction*>() << connect << add_fav << copy); QAction *ret = m->exec(QCursor::pos()); m->deleteLater(); if (ret == connect){ PublicHubItem * item = NULL; MainWindow *MW = MainWindow::getInstance(); for (const auto &i : indexes){ item = reinterpret_cast<PublicHubItem*>(i.internalPointer()); if (item) MW->newHubFrame(item->data(COLUMN_PHUB_ADDRESS).toString(), ""); item = NULL; } } else if (ret == add_fav){ PublicHubItem * item = NULL; for (const auto &i : indexes){ item = reinterpret_cast<PublicHubItem*>(i.internalPointer()); if (item && item->entry){ try{ FavoriteManager::getInstance()->addFavorite(*item->entry); } catch (const std::exception&){} } item = NULL; } } else if (ret == copy){ PublicHubItem * item = NULL; QString out = ""; for (const auto &i : indexes){ item = reinterpret_cast<PublicHubItem*>(i.internalPointer()); if (item) out += item->data(COLUMN_PHUB_ADDRESS).toString() + "\n"; item = NULL; } if (!out.isEmpty()) qApp->clipboard()->setText(out, QClipboard::Clipboard); } }
void SettingsSharing::slotContextMenu(const QPoint &){ QList<QTreeWidgetItem*> selected = treeWidget_SIMPLE_MODE->selectedItems(); QMenu *menu = new QMenu(); QAction *add_new = NULL, *rem = NULL, *rename = NULL; WulforUtil *WU = WulforUtil::getInstance(); add_new = new QAction(WU->getPixmap(WulforUtil::eiEDITADD), tr("Add"), menu); menu->addAction(add_new); if (selected.size() == 1){ rename = new QAction(WU->getPixmap(WulforUtil::eiEDIT), tr("Rename"), menu); menu->addAction(rename); } if (selected.size() > 0){ rem = new QAction(WU->getPixmap(WulforUtil::eiEDITDELETE), tr("Remove"), menu); menu->addAction(rem); } QAction *res = menu->exec(QCursor::pos()); delete menu; if (!res) return; if (res == add_new){ QString dir = QFileDialog::getExistingDirectory(this, tr("Select directory"), QDir::homePath()); if (dir.isEmpty()) return; dir = QDir::toNativeSeparators(dir); if (!dir.endsWith(PATH_SEPARATOR)) dir += PATH_SEPARATOR_STR; bool ok = false; QString dir_alias = QInputDialog::getText(this, tr("Select directory"), tr("Name"), QLineEdit::Normal, QDir(dir).dirName(), &ok); dir_alias = dir_alias.trimmed(); if (!ok || dir_alias.isEmpty()) return; try { ShareManager::getInstance()->addDirectory(dir.toStdString(), dir_alias.toStdString()); } catch (const ShareException &e) { QMessageBox msg_box(QMessageBox::Critical, tr("Error"), QString::fromStdString(e.getError()), QMessageBox::Ok); msg_box.exec(); return; } QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget_SIMPLE_MODE); item->setText(0, dir); item->setText(1, dir_alias); item->setText(2, ""); item->setText(3, ""); } else if (res == rem){ foreach(QTreeWidgetItem *i, selected) ShareManager::getInstance()->removeDirectory(i->text(0).toStdString()); } else if (res == rename){ QTreeWidgetItem *item = selected.at(0); QString realname = item->text(0); QString virtname = item->text(1); bool ok = false; QString new_virtname = QInputDialog::getText(this, tr("Enter new name"), tr("Name"), QLineEdit::Normal, virtname, &ok); if (!ok || new_virtname.isEmpty() || new_virtname == virtname) return; try { ShareManager::getInstance()->renameDirectory(realname.toStdString(), new_virtname.toStdString()); } catch (const ShareException &e){ QMessageBox msg_box(QMessageBox::Critical, tr("Error"), QString::fromStdString(e.getError()), QMessageBox::Ok); msg_box.exec(); return; } } updateShareView(); }