void TransactionView::setModel(WalletModel* model)
{
    QSettings settings;
    this->model = model;
    if (model) {
        transactionProxyModel = new TransactionFilterProxy(this);
        transactionProxyModel->setSourceModel(model->getTransactionTableModel());
        transactionProxyModel->setDynamicSortFilter(true);
        transactionProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
        transactionProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);

        transactionProxyModel->setSortRole(Qt::EditRole);

        transactionView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
        transactionView->setModel(transactionProxyModel);
        transactionView->setAlternatingRowColors(true);
        transactionView->setSelectionBehavior(QAbstractItemView::SelectRows);
        transactionView->setSelectionMode(QAbstractItemView::ExtendedSelection);
        transactionView->setSortingEnabled(true);
        transactionView->sortByColumn(TransactionTableModel::Date, Qt::DescendingOrder);
        transactionView->verticalHeader()->hide();

        transactionView->setColumnWidth(TransactionTableModel::Status, STATUS_COLUMN_WIDTH);
        transactionView->setColumnWidth(TransactionTableModel::Watchonly, WATCHONLY_COLUMN_WIDTH);
        transactionView->setColumnWidth(TransactionTableModel::Date, DATE_COLUMN_WIDTH);
        transactionView->setColumnWidth(TransactionTableModel::Type, TYPE_COLUMN_WIDTH);
        transactionView->setColumnWidth(TransactionTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH);

        // Note: it's a good idea to connect this signal AFTER the model is set
        connect(transactionView->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this, SLOT(computeSum()));

        columnResizingFixer = new GUIUtil::TableViewLastColumnResizingFixer(transactionView, AMOUNT_MINIMUM_COLUMN_WIDTH, MINIMUM_COLUMN_WIDTH);

        if (model->getOptionsModel()) {
            // Add third party transaction URLs to context menu
            QStringList listUrls = model->getOptionsModel()->getThirdPartyTxUrls().split("|", QString::SkipEmptyParts);
            for (int i = 0; i < listUrls.size(); ++i) {
                QString host = QUrl(listUrls[i].trimmed(), QUrl::StrictMode).host();
                if (!host.isEmpty()) {
                    QAction* thirdPartyTxUrlAction = new QAction(host, this); // use host as menu item label
                    if (i == 0)
                        contextMenu->addSeparator();
                    contextMenu->addAction(thirdPartyTxUrlAction);
                    connect(thirdPartyTxUrlAction, SIGNAL(triggered()), mapperThirdPartyTxUrls, SLOT(map()));
                    mapperThirdPartyTxUrls->setMapping(thirdPartyTxUrlAction, listUrls[i].trimmed());
                }
            }
        }

        // show/hide column Watch-only
        updateWatchOnlyColumn(model->haveWatchOnly());

        // Watch-only signal
        connect(model, SIGNAL(notifyWatchonlyChanged(bool)), this, SLOT(updateWatchOnlyColumn(bool)));

        // Update transaction list with persisted settings
        chooseType(settings.value("transactionType").toInt());
        chooseDate(settings.value("transactionDate").toInt());
    }
}
Esempio n. 2
0
int main(int argc,char *argv[])
{
	char recvBuf[sizeof(DataForAI)+1];
	char sendBuf[128];
	
    if (argc!=2)
	{
        return 1;
    }
   	WORD wVersionRequested;
	WSADATA wsaData;
	int err;
	wVersionRequested = MAKEWORD( 1, 1 );
	err = WSAStartup( wVersionRequested, &wsaData );
	if ( err != 0 ) 
	{
		return 1;
	}
	if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) 
	{
			WSACleanup( );
			return 1;
	}
	SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
	SOCKADDR_IN addrSrv;
	addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
	addrSrv.sin_family=AF_INET;
	addrSrv.sin_port=htons(atoi(argv[1]));
	if (bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR))<0)
    {
        MessageBox(NULL,TEXT("端口已被其他程序绑定。请检查是否启用了另一个同色AI。"),"错误", MB_ICONERROR);
        return 1;                                                         
    }
	listen(sockSrv,1);
	SOCKADDR_IN addrClient;
	int len=sizeof(SOCKADDR);
	printf("AI Startup.\n");

	while(1)
	{
        int recv_len=0;
		SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
		recv_len=recv(sockConn,recvBuf,sizeof(DataForAI),0);
        while (recv_len<sizeof(DataForAI))
        {
            Sleep(16);
            recv_len+=recv(sockConn,recvBuf+recv_len,sizeof(DataForAI)-recv_len,0);
        }
		if (strcmp(recvBuf,"Exit")==0)
		{
			break;
		}
		if (strcmp(recvBuf,"Initiate_red")==0)
		{
			*(InitiateInfo *)sendBuf = chooseType();
			printf("Red AI verified. Name:%s\n",((InitiateInfo *)sendBuf)->aiName);
		}
		else 
			if (strcmp(recvBuf,"Initiate_blue")==0)
			{
				*(InitiateInfo *)sendBuf = chooseType();
				printf("Blue AI verified. Name:%s\n",((InitiateInfo *)sendBuf)->aiName);
		     }
			else
			{
				*(Order *)sendBuf = makeOrder(*(DataForAI *)recvBuf);
            }
		Sleep(32);
        int send_len=send(sockConn,(const char *)(sendBuf),128,0);
        closesocket(sockConn);

	}
	return 0;      
}