#include <tqpopupmenu.h>
#include <tqwidget.h>
#include <tqstring.h>
#include <tqmessagebox.h>
#include <tqmultilineedit.h>
#include <tqkeycode.h>
#include <tqpixmap.h>
#include <tqcursor.h>

#include <stdlib.h>

#include "kstatusbar.h"
#include <tdeapplication.h>
#include <tdemainwindow.h>
#include <tdemenubar.h>
#include "kstatusbartest.h"

testWindow::testWindow (TQWidget *, const char *name)
    : TDEMainWindow (0, name)
 {
    // Setup Menus
    menuBar = new KMenuBar (this);
    fileMenu = new TQPopupMenu;
    menuBar->insertItem ("&File", fileMenu);
    fileMenu->insertItem ("&Exit", TDEApplication::kApplication(),
                          TQT_SLOT( quit() ), ALT + Key_Q );
    statusbar = new KStatusBar (this);
    statusbar->insertItem("Zoom: XXXX", 0);
    statusbar->insertItem("XXX", 1);
    statusbar->insertItem("Line: XXXXX", 2);

    statusbar->changeItem("Zoom: 100%", 0);
    statusbar->changeItem("INS", 1);
    insert = true;
    statusbar->changeItem("Line: 13567", 2);

    connect (statusbar, TQT_SIGNAL(pressed(int)), this, TQT_SLOT(slotPress(int)));
    connect (statusbar, TQT_SIGNAL(released(int)), this, TQT_SLOT(slotClick(int)));

    widget = new TQMultiLineEdit (this);

    setCentralWidget(widget);

    setCaption( TDEApplication::kApplication()->caption() );

    smenu = new TQPopupMenu;
  
    smenu->insertItem("50%");
    smenu->insertItem("75%");
    smenu->insertItem("100%");
    smenu->insertItem("150%");
    smenu->insertItem("200%");
    smenu->insertItem("400%");
    smenu->insertItem("oo%");

    connect (smenu, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotMenu(int)));
}

void testWindow::slotClick(int id)
{
  switch (id)
   {
    case 0:
      break;

    case 1:
      if (insert == true)
       {
         insert = false;
         statusbar->changeItem("OVR", 1);
       }
      else
       {
         insert = true;
         statusbar->changeItem("INS", 1);
       }
      break;

    case 2:
      TQMessageBox::information(0, "Go to line", "Enter line number:", "where?");
      statusbar->changeItem("16543", 2);
      break;
   }
}
       
void testWindow::slotPress(int id)
{
  if (id == 0)
    smenu->popup(TQCursor::pos()); // This popup should understand keys up and down
}

void testWindow::slotMenu(int id)
{
  TQString s = "Zoom: ";
  s.append (smenu->text(id));
  statusbar->changeItem(s,0);
}

testWindow::~testWindow ()
{
  // I would delete toolbars here, but there are none
  delete statusbar;
}

int main( int argc, char *argv[] )
{
        TDEApplication *myApp = new TDEApplication( argc, argv, "KStatusBarTest" );
        testWindow *test = new testWindow;

        myApp->setMainWidget(test);
        test->show();
        test->resize(test->width(), test->height()); // I really really really dunno why it doesn't show
        int ret = myApp->exec();

        delete test;

        return ret;
} 

#include "kstatusbartest.moc"

