/*************************************************************************** * reads the TDEConfig **/ void KDFWidget::loadSettings( void ) { mStd.updateConfiguration(); if(GUI) { TDEConfig &config = *kapp->config(); config.setGroup("KDiskFree"); for( uint i=0; i<mTabProp.size(); i++ ) { CTabEntry &e = *mTabProp[i]; e.mWidth = config.readNumEntry( e.mRes, e.mWidth ); } if (mTabProp[usageCol]->mWidth > 16) mTabProp[usageCol]->mWidth -= 16; config.setGroup("KDFConfig"); for( uint i=0; i<mTabProp.size(); i++ ) { CTabEntry &e = *mTabProp[i]; e.mVisible = config.readBoolEntry( e.mRes, e.mVisible ); } makeColumns(); setUpdateFrequency( mStd.updateFrequency() ); updateDF(); } }
DiskInfoWidget::DiskInfoWidget(QWidget *parent, const char *name, ConfigDialogImpl *config, bool init) : QWidget(parent, name) { _config = config; connect(&mDiskList , SIGNAL(readDFDone() ), this, SLOT (updateDFDone()) ); connect(&mDiskList , SIGNAL(criticallyFull(DiskEntry*)), this, SLOT (criticallyFull(DiskEntry*)) ); mTabProp.resize(8); mTabProp[0] = new CTabEntry( "Icon", i18n("Icon"), false, 0); mTabProp[1] = new CTabEntry( "Device", i18n("Device"), false, 0); mTabProp[2] = new CTabEntry( "Type", i18n("Type"), false, 0); mTabProp[3] = new CTabEntry( "Size", i18n("Size"), false, 0); mTabProp[4] = new CTabEntry( "MountPoint", i18n("Mount Point"), true, 90 ); mTabProp[5] = new CTabEntry( "Free", i18n("Free"), false, 0); // xgettext:no-c-format mTabProp[6] = new CTabEntry( "Full%", i18n("Full %"), false, 0); mTabProp[7] = new CTabEntry( "UsageBar", i18n("Usage"), true, 100); GUI = !init; if( GUI ) { QVBoxLayout *topLayout = new QVBoxLayout( this, 0, 0 ); mList = new CListView( this, "list" ); topLayout->addWidget( mList ); mList->setAllColumnsShowFocus( true ); mList->setFrameStyle( QFrame::WinPanel + QFrame::Sunken ); mList->setShowSortIndicator(true); QPalette pal; QColorGroup cg; cg.setColor( QColorGroup::Button, BACKGROUND ); cg.setColor( QColorGroup::ButtonText, TEXTCOLOR ); cg.setColor( QColorGroup::Base, BACKGROUND ); pal.setActive( cg ); cg.setColor( QColorGroup::Button, BACKGROUND ); cg.setColor( QColorGroup::ButtonText, TEXTCOLOR ); cg.setColor( QColorGroup::Base, BACKGROUND ); pal.setInactive( cg ); cg.setColor( QColorGroup::Button, BACKGROUND ); cg.setColor( QColorGroup::ButtonText, TEXTCOLOR ); cg.setColor( QColorGroup::Base, BACKGROUND ); pal.setDisabled( cg ); mList->setPalette( pal ); // connect( mList, // SIGNAL( pressed( QListViewItem *, const QPoint &, int )), // this, SLOT( rightButtonPressed( QListViewItem *, const QPoint &, int ))); // connect( mList, // SIGNAL( clicked( QListViewItem *, const QPoint &, int )), // this, SLOT( rightButtonClicked( QListViewItem *, const QPoint &, int ))); connect( mList->header(), SIGNAL(sizeChange(int, int, int)), this, SLOT(columnSizeChanged(int, int, int)) ); makeColumns(); } updateDF(); setUpdateFrequency(60); }
KDFWidget::KDFWidget( TQWidget *parent, const char *name, bool init ) : TQWidget(parent, name), mOptionDialog(0), mPopup(0), mTimer(0) { connect(&mDiskList , TQT_SIGNAL(readDFDone() ), this, TQT_SLOT (updateDFDone()) ); connect(&mDiskList , TQT_SIGNAL(criticallyFull(DiskEntry*)), this, TQT_SLOT (criticallyFull(DiskEntry*)) ); mTabProp.resize(8); mTabProp[0] = new CTabEntry( "Icon", i18n("Icon"), true, 32); mTabProp[1] = new CTabEntry( "Device", i18n("Device"), true, 80); mTabProp[2] = new CTabEntry( "Type", i18n("Type"), true, 50); mTabProp[3] = new CTabEntry( "Size", i18n("Size"), true, 72); mTabProp[4] = new CTabEntry( "MountPoint", i18n("Mount Point"), true, 90 ); mTabProp[5] = new CTabEntry( "Free", i18n("Free"), true, 55); // xgettext:no-c-format mTabProp[6] = new CTabEntry( "Full%", i18n("Full %"), true, 70); mTabProp[7] = new CTabEntry( "UsageBar", i18n("Usage"), true, 100); GUI = !init; if( GUI ) { TQVBoxLayout *topLayout = new TQVBoxLayout( this, 0, 0 ); mList = new CListView( this, "list" ); topLayout->addWidget( mList ); mList->setAllColumnsShowFocus( true ); mList->setFrameStyle( TQFrame::WinPanel + TQFrame::Sunken ); mList->setShowSortIndicator(true); connect( mList, TQT_SIGNAL( rightButtonPressed( TQListViewItem *, const TQPoint &, int )), this, TQT_SLOT( rightButtonPressed( TQListViewItem *, const TQPoint &, int ))); connect( mList, TQT_SIGNAL( rightButtonClicked( TQListViewItem *, const TQPoint &, int )), this, TQT_SLOT( rightButtonClicked( TQListViewItem *, const TQPoint &, int ))); connect( mList->header(), TQT_SIGNAL(sizeChange(int, int, int)), this, TQT_SLOT(columnSizeChanged(int, int, int)) ); makeColumns(); mIsTopLevel = TQString(parent->className()) == "KDFTopLevel" ? true : false; } loadSettings(); if( init == true ) { applySettings(); } }
/* Pobiera tekst ze standardowego wejscia, justuje w dwoch kolumnach i wysyla na standardowe wejscie. Wymaga 4 parametrow: 1: dlugosc lewego marginesu, 2: dlugosc lewej kolumny (niezerowa), 3: dlugosc odstepu miedzy kolumnami, 4: dlugosc prawej kolumny (niezerowa). Suma wartosci parametrow nie moze byc wieksza niz ustawiona dlugosc wiersza konsoli (stala LineLength). Slowa musza miescic sie w przydzielonych im kolumnach. W przeciwnym razie wykonywanie programu zostaje przerwane. Wyrazy pobierane sa az do napotkania znaku konca pliku (EOF). */ int main (int argc, char *argv[]) { /* Lista wierszy. */ LinesHandler *Lines; int /* Zrzutowane wartosci parametrow programu. */ Margin, S1, Distance, S2, /* Wynik testu poprawnosci sprawdzanej liczby wierszy. */ LinesNoCorrectness, /* Okresla czy kolumny sie "spotkaly" (podczas wypelniania ich wyrazami). */ LinesMet = 0, /* Ostateczna liczba kolumn <= MaxLinesNo - warunek poprawnosci bedzie spr. dla l. wierszy = MaxLinesNo i mniejszych. */ MaxLinesNo = 0, Iterator; /* Lista wyrazow. */ WordsHandler *Words; /* Alokowanie pamieci na liste wyrazow. */ Words = (WordsHandler*) malloc (sizeof (WordsHandler)); if (Words == NULL) { printf ("Memory allocation error!\n"); return 0; } Words->First = NULL; Words->Last = NULL; /* Alokowanie pamieci na liste wierszy. */ Lines = (LinesHandler*) malloc (sizeof (LinesHandler)); if (Lines == NULL) { printf ("Memory allocation error!\n"); free (Words); return 0; } Lines->First = NULL; /* Sprawdzenie czy podano wymagana liczbe paramentrow. */ if (argc != 5) { printf ("Invalid number of parameters!\n"); return 0; } /* Przypisanie wartosci parametrcw do zmiennych. */ Margin = (int) atoi (argv [1]); S1 = (int) atoi (argv [2]); Distance = (int) atoi (argv [3]); S2 = (int) atoi (argv [4]); /* Sprawdzenie czy wartosci parametrow spelniaja przypisane im wymagania. */ if (S1 == 0 || S2 == 0) { printf ("Lines' length mustn't be egual to 0!\n"); return 0; } else if (Margin < 0 || S1 < 0 || Distance < 0 || S2 < 0) { printf ("None parameter can be less than 0!\n"); return 0; } else if (Margin + S1 + Distance + S2 > LineLength) { printf ("Margin + Col 1st length + Distance + Col 2nd length must be less or equal to %d!\n", LineLength); return 0; } /* Wczytuje slowa i sprawdza, czy mozliwe jest dla nich wykonanie kodu (slowa mieszcza sie w kolumnach etc.). */ if (!readWords (Words, S1, S2)) { freeMemory (Lines, Words); return 0; } /* Obsluga sytuacji gdy wprowadzony tekst to pojednyczy wyraz. */ if (Words->First->Next == NULL) { if (Words->First->Length <= S1) { for (Iterator = 0; Iterator < Margin; Iterator++) printf (" "); printf ("%s\n", Words->First->Content); } else printf ("The word is too long!"); freeMemory (Lines, Words); return 0; } /* Obliczanie gornego ograniczenia dla szukanej liczby wierszy. */ MaxLinesNo = calculateMaxLinesNo (Words, S1, S2); do { LinesNoCorrectness = checkColumnsCorrectness (Words, S1, S2, MaxLinesNo); switch (LinesNoCorrectness) { /* Dla podanych danych co najmniej jeden z wyrazow nie miesci sie w wyznaczonym miejscu. */ case -2: printf ("At least one of words was too long!\n"); freeMemory (Lines, Words); return 0; /* Nie istnieje rozwiazanie spelniajace podane zalozenia. */ case -1: printf ("Proper justification wasn't possible!\n"); freeMemory (Lines, Words); return 0; /* Podana liczba wierszy jest zbyt wysoka - nalezy sprawdzix nizsze wartosci. */ case 0: MaxLinesNo--; continue; /* Znaleziono szukano liczbe wierszy - przygotowanie kolumn i wyswietleniee wynikow. */ case 1: /* Czasem zachodzi sytuacja gdy funkcja sprawdzajaca daje poprawne wyniki dla wiecej niz 1 wartosci. Wtedy wybierana jest najmniejsza. */ while (checkColumnsCorrectness (Words, S1, S2, MaxLinesNo-1) == 1) MaxLinesNo--; if (makeColumns (Lines, Words, S1, S2, MaxLinesNo)) displayResults (Lines, Margin, Distance); else printf ("Memory allocation error!\n"); break; } } while (LinesNoCorrectness == 0); /* Poki liczba wierszy jest zbyt duza, nalezy ja zmniejszac. Znalezienie rozwiazania (lub stwierdzenie jego braku) przeywa petle. */ /* Zwalnia pamiec przed zakonczeniem programu. */ freeMemory (Lines, Words); return 0; }