Subversion Repositories spk

Rev

Rev 197 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include "../StdAfx.h"
#include "FakePatchControl.h"

namespace PluginManager {
        void FakePatchControl::UpdateList()
        {
                this->listView1->Items->Clear();
                
                m_pPackages->AssignPackageNumbers();
                for ( CBaseFile *p = m_pPackages->FirstPackage(); p; p = m_pPackages->NextPackage() )
                {
                        if ( !p->IsEnabled() ) continue;
                        if ( !p->AnyFileType(FILETYPE_MOD) ) continue;

                        Utils::WString packageName = p->getFullPackageName(m_pPackages->GetLanguage());

                        for ( C_File *f = p->GetFirstFile(FILETYPE_MOD); f; f = p->GetNextFile(f) )
                        {
                                if (!f->IsFakePatch()) continue;
                                if (!f->checkFileExt(L"cat")) continue;

                                ListViewItem ^item = gcnew ListViewItem(_US(packageName));
                                item->ImageIndex = 1;
                                this->listView1->Items->Add(item);
                                item->Tag = p->GetNum();

                                break;
                        }
                }
                
                this->listView1->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
        }

        void FakePatchControl::ApplyOrder()
        {
                auto& list = m_pPackages->getFakePatchOrder();
                for(auto itr = list.begin(); itr != list.end(); itr++)
                {
                        CBaseFile *p = m_pPackages->findPackage((*itr)->str, (*itr)->data);
                        if ( p )
                        {
                                // find item and move it
                                for ( int i = 0; i < this->listView1->Items->Count; i++ )
                                {
                                        if ( Convert::ToInt32(this->listView1->Items[i]->Tag) == p->GetNum() )
                                        {
                                                Order(this->listView1->Items[i]);
                                                break;
                                        }
                                }
                        }
                }
        }

        void FakePatchControl::Save()
        {
                m_lFakePatches->clear();
                for ( int i = 0; i < this->listView2->Items->Count; i++ )
                {
                        int pos = Convert::ToInt32(this->listView2->Items[i]->Tag);
                        CBaseFile *p = m_pPackages->GetPackageAt(pos);
                        if ( p )
                                m_lFakePatches->pushBack(p->name(), p->author());
                }
        }
};