mcabber/src/commands.c
changeset 1292 382ec54b584e
parent 1290 e42f48103609
child 1299 3b338a5c01fc
equal deleted inserted replaced
1291:9f64f548ac16 1292:382ec54b584e
   255   compl_add_category_word(COMPL_PGP, "info");
   255   compl_add_category_word(COMPL_PGP, "info");
   256   compl_add_category_word(COMPL_PGP, "setkey");
   256   compl_add_category_word(COMPL_PGP, "setkey");
   257 
   257 
   258   // Color category
   258   // Color category
   259   compl_add_category_word(COMPL_COLOR, "roster");
   259   compl_add_category_word(COMPL_COLOR, "roster");
       
   260   compl_add_category_word(COMPL_COLOR, "muc");
       
   261   compl_add_category_word(COMPL_COLOR, "mucnick");
   260 }
   262 }
   261 
   263 
   262 //  expandalias(line)
   264 //  expandalias(line)
   263 // If there is one, expand the alias in line and returns a new allocated line
   265 // If there is one, expand the alias in line and returns a new allocated line
   264 // If no alias is found, returns line
   266 // If no alias is found, returns line
   722     return;
   724     return;
   723   }
   725   }
   724 
   726 
   725   if (!strcasecmp(subcmd, "roster")) {
   727   if (!strcasecmp(subcmd, "roster")) {
   726     char **arglist = split_arg(arg, 3, 0);
   728     char **arglist = split_arg(arg, 3, 0);
   727     char *status = *arglist, *wildcard = arglist[1], *color = arglist[2];
   729     char *status = *arglist, *wildcard = to_utf8(arglist[1]), *color = arglist[2];
   728     if (status && !strcmp(status, "clear")) { // Not a color command, clear all
   730     if (status && !strcmp(status, "clear")) { // Not a color command, clear all
   729       scr_RosterClearColor();
   731       scr_RosterClearColor();
   730       update_roster = TRUE;
   732       update_roster = TRUE;
   731     } else {
   733     } else {
   732       if (!status || !*status || !wildcard || !*wildcard || !color || !*color) {
   734       if (!status || !*status || !wildcard || !*wildcard || !color || !*color) {
   734       } else {
   736       } else {
   735         update_roster = scr_RosterColor(status, wildcard, color)
   737         update_roster = scr_RosterColor(status, wildcard, color)
   736                         || update_roster;
   738                         || update_roster;
   737       }
   739       }
   738     }
   740     }
       
   741     free_arg_lst(arglist);
       
   742     g_free(wildcard);
       
   743   } else if (!strcasecmp(subcmd, "muc")) {
       
   744     char **arglist = split_arg(arg, 2, 0);
       
   745     char *free_muc = to_utf8(*arglist);
       
   746     const char *muc = free_muc, *mode = arglist[1];
       
   747     if (!muc || !*muc)
       
   748       scr_LogPrint(LPRINT_NORMAL, "What MUC?");
       
   749     else {
       
   750       if (!strcmp(muc, "."))
       
   751         if (!(muc = CURRENT_JID))
       
   752           scr_LogPrint(LPRINT_NORMAL, "No JID selected");
       
   753       if (muc) {
       
   754         if (check_jid_syntax(muc) && strcmp(muc, "*"))
       
   755           scr_LogPrint(LPRINT_NORMAL, "Not a JID");
       
   756         else {
       
   757           if (!mode || !*mode || !strcasecmp(mode, "on"))
       
   758             scr_MucColor(muc, MC_ALL);
       
   759           else if (!strcasecmp(mode, "preset"))
       
   760             scr_MucColor(muc, MC_PRESET);
       
   761           else if (!strcasecmp(mode, "off"))
       
   762             scr_MucColor(muc, MC_OFF);
       
   763           else if (!strcmp(mode, "-"))
       
   764             scr_MucColor(muc, MC_REMOVE);
       
   765           else
       
   766             scr_LogPrint(LPRINT_NORMAL, "Unknown coloring mode");
       
   767         }
       
   768       }
       
   769     }
       
   770     free_arg_lst(arglist);
       
   771     g_free(free_muc);
       
   772   } else if (!strcasecmp(subcmd, "mucnick")) {
       
   773     char **arglist = split_arg(arg, 2, 0);
       
   774     const char *nick = *arglist, *color = arglist[1];
       
   775     if (!nick || !*nick || !color || !*color)
       
   776       scr_LogPrint(LPRINT_NORMAL, "Missing argument");
       
   777     else
       
   778       scr_MucNickColor(nick, color);
   739     free_arg_lst(arglist);
   779     free_arg_lst(arglist);
   740   } else
   780   } else
   741     scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
   781     scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
   742   free_arg_lst(paramlst);
   782   free_arg_lst(paramlst);
   743 }
   783 }