Subversion Repositories spk

Rev

Go to most recent revision | 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;

                        CyString 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("cat") ) continue;

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

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

        void FakePatchControl::ApplyOrder()
        {
                for ( SStringList *str = m_pPackages->GetFakePatchOrder()->Head(); str; str = str->next )
                {
                        CBaseFile *p = m_pPackages->FindPackage(str->str, str->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->GetName(), p->GetAuthor());
                }
        }
};